SAML LÀ GÌ
Nếu các bạn đã từng có lần nghe OAuthxuất xắc OAuth2thì SAMLđó là một chuẩn chỉnh khác nhằm giải quyết và xử lý bài xích tân oán tương tự cùng với OAuthcùng OAuth2.Quý khách hàng đã xem: Sso là gì
Bài toán nhưng mà những chuẩn bên trên giải quyết tên là SSO (Single Sign On).
Bạn đang xem: Saml là gì
SSOnảy sinh trường đoản cú sự việc lúc những đơn vị hỗ trợ hình thức hy vọng người tiêu dùng rất có thể sử dụng các dịch vụ không giống nhau nhưng chỉ việc singin vào một trong những chỗ độc nhất, giúp cho vấn đề thực hiện được dễ dàng tương tự như góp cho người dùng làm chủ các username với password được giảm xuống buổi tối tđọc, thì yên cầu cần phải có một phương pháp như thế nào đó rất có thể xác xắn cùng ủy quyền đọc tin người dùng nhưng ko nên bắt bọn họ tạo nên thông tin tài khoản không giống nhau bên trên hồ hết hình thức dịch vụ không giống nhau.
Chú ý: SAMLtự động xử lý cả 2 vấn đề đảm bảo (authentication)cùng ủy quyền (authorization)tuy nhiên OAuthvà OAuth2chỉ tự động giải quyết được vụ việc uỷ quyền(link tìm hiểu thêm trên đây).
SAML(Security Assertion Markup Language) là 1 trong "chuẩn chỉnh mở" có thể chấp nhận được đơn vị cung cấp thực thể (Identity Provider - IdP) xác xắn người dùng và ủy quyền cho tất cả những người dùng áp dụng một hình thức nào đó của công ty cung cấp dịch vụ(Service Provider - SP) mà ko buộc phải người tiêu dùng phải khởi tạo tài khoản đăng nhtràn lên hình thức dịch vụ kia.
Định nghĩa nlỗi trên gọi sẽ nặng nề đọc, nhưng nếu bạn biết nút ít "Đăng nhập bằng Facebook" ở một trong những website thì mục đích của mẫu nút kia đó là mục tiêu của SAML.
2. Cách hoạt động vui chơi của SAML.

Tại hình trên thì: SPlà bên cung cấp các dịch vụ (là ứng dụng gồm nút ít "Đăng nhập bằng Facebook" ấy), IdPlà đơn vị cung ứng các thực thể (thông tin tài khoản người dùng - IdPlàm việc đây là Facebook đấy).
Bước 1: User vẫn cliông chồng vào nút ít "Đăng nhập bởi tài khoản của vật gì đó" từ browser, request này sẽ được thân tặng SP.Bước 2: Phía SPsẽ tạo ra một SAML Requestnhằm thân tặng IdP, SAML Requestnày sẽ tiến hành thiết yếu SPký kết điện tử (sign) bằng chữ cam kết của SP. (chữ ký của SP. tại đây chính là khóa kín đáo của SP).Bước 3: Phía IdPkhi nhận thấy SAML Requesttừ bỏ SPvẫn buộc phải xác thựcchữ cam kết tất cả chính xác là của SPhay là không bằng phương pháp dùng khóa công khai minh bạch của SPnhằm xác thực:Khóa công khai minh bạch của SPnày IdPrước trường đoản cú đâu?
Trước khi triển khai thanh toán giao dịch, SPvới IdPđề xuất bằng cách làm sao đó điều đình được khóa công khaicùng nhau trước (chưa hẳn khóa túng thiếu mậtnhé). Đôi khi, mỗi bên SPvới IdPsẽ sở hữu được một public url cất metadata, metadatanày chứa các biết tin công khai minh bạch nhỏng làkhóa công khai, ID thực thểcùng URL nhằm điều phối Lúc có request mang lại. Phía IdPđã hiểu rằng metadata url của SPnhằm từ đó lôi ra khóa công khai minh bạch của SPđể đúng đắn chữ ký kết của SP. Trong ngôi trường hòa hợp khối hệ thống của Idpvẫn gồm sẵn với ko mang public key của SPtrải qua metadata urlđược thì SPbắt buộc gửi khóa công khai của mìnhcho Idpsetup trước lúc thực hiện giao dịch thanh toán.
Xem thêm: Tỷ Giá Yên Nhật Hôm Nay Bao Nhiêu, Tỷ Giá Yên Nhật (Jpy) Hôm Nay
Trong trường hợp này: Ứng dụng Rails của khách hàng đó là SP, với ứng dụng chúng ta sản xuất bên trên Okta chính là Idp.
3.1. Cấu hình trong Rails.
Source code vào rails:# /config/routes.rb scope module: :mrs, controller: "saml_sessions" vì chưng get :new, path: "saml/sign_in", as: :new_mr_sso_session post :create, path: "saml/auth", as: :mr_sso_session get :metadata, path: "saml/metadata", as: :metadata_mr_sso_session end# /controllers/mrs/saml_sessions_controller.rbclass Mrs::SamlSessionsController
Cơ bạn dạng source code trong rails chỉ có nhỏng bên trên thôi. Phần cài đặt của SAMLphía trong method saml_settings:
Url của metadata của IdPđó là url nằm trong câu lệnh idp_metadata_parser.parse_remote(...).settings.issuerđó là SP identity, là tên gọi của thưc thể SP, thường xuyên nó sẽ tiến hành gán cho cực hiếm làurl của metadata của SP. Sau Lúc thiết đặt kết thúc các bạn truy vấn vào mặt đường link http://localhost/mrs/saml/metadatathì nó đã tự động render ra dữ liệu metadatacho chính mình.assertion_cosumer_service_urllà url nhằm IdPtrả hiệu quả lại mang đến SP. lúc SP nhận kết quả từ IdP, nó sẽ đối chiếu url bao gồm trong SAML Responsecùng với url này nhằm xác xắn coi tất cả đúng hiệu quả được trả về đúng liên tưởng ko, nếu không đúng đã báo lỗi.settings.certificatelà khóa công khai của SP, SPđề nghị khai báo nó tại chỗ này nhằm xác xắn chữ ký của IdP.Với method metadatangơi nghỉ bên trên thì khi chúng ta truy cập vào http://localhost/mrs/saml/metadata, hầu hết công bố cần thiết knhì báo vào saml_settingssẽ được public ra mạng internet (hồ hết đọc tin kín đáo sẽ không được công khai).settings.private_keylà khóa bí mật của SP, SPbắt buộc knhì báo nó ở chỗ này để cam kết vào vào SAML request ý muốn thân tặng mang lại IdP.authn_requests_signedlà cũng muốn kývào SAML request gửi tới IdPtuyệt không? Tại mặt phía IdPrất có thể ko nên xác thực chữ ký kết của SPcho dù mặt SPgồm cam kết hay là không.want_assertions_signedlà tất cả kinh nghiệm SAML Assertionsđược IdPký không? Bên phía IdPrất có thể ko bắt buộc ký vào SAML Assertionsmặc dù bên SPbao gồm từng trải hay không. Sẽ không có lỗi gì được báo cho dù mặt SPđề nghị IdPký nhưng mà IdPkhông cam kết.Bạn để ý trong hàm createko lấy userbằng email được gửi về tự okta (IdP) cơ mà ta mong mỏi IdPgửi về một thuộc tính không giống (LastNametrong khúc code trên).
Để chế tạo ra certificatecùng private_keysinh sống trên, bạn chạy câu lệnh tiếp sau đây trong terminal:
openssl req -new -x509 -days 365 -nodes -sha256 -out key.crt -keyout p_key.pemNó sẽ khởi tạo ra cho mình một cặp khóa public keykey.crtvà private keyp_key.pem. Khóa sẽ sở hữu hạn là 365ngày như mình chỉ định vào câu lệnh bên trên.
Xem thêm: Cách Tính Hệ Số Nợ, Hệ Số Thanh Khoản, Thông Tin Về Hệ Số Nợ Trên Tổng Tài Sản Là Gì
3.2. Tạo ứng dụng IdP trên okta.
Trước tiên bạn phải có tác dụng là biến hóa giao diện trên okta trường đoản cú Developer Consolethành Classic UIthì mới tạo ra app: