Chuyển tới nội dung chính

SAML

Tổng Quan

SAML (Security Assertion Markup Language) là một tiêu chuẩn mở giúp tạo điều kiện cho việc xác thực và ủy quyền giữa các bên khác nhau. Nó thường được sử dụng trong các hệ thống Single Sign-On (SSO), cho phép người dùng đăng nhập một lần và truy cập vào nhiều dịch vụ mà không cần nhập lại thông tin xác thực của họ.

Plugin SAML trong Kong API Gateway

Thông số kỹ thuật SAML xác định ba vai trò chính:

  • Principal – Người dùng đăng nhập.
  • Identity Provider (IdP) – Thực thể xác thực người dùng và phát hành các tuyên bố danh tính.
  • Service Provider (SP) – Ứng dụng hoặc hệ thống nhận các tuyên bố xác thực.

Trong Kong API Gateway, SAML plugin đóng vai trò là Service Provider (SP) và chịu trách nhiệm khởi tạo một phiên đăng nhập đến IdP (đăng nhập do SP khởi xướng).

Các Tính Năng Chính của Plugin SAML

  • SSO Implementation: Chuyển hướng người dùng chưa xác thực đến trang đăng nhập của IdP và, sau khi xác thực, cấp quyền truy cập vào các dịch vụ được bảo vệ.
  • Session Management: Duy trì phiên người dùng bằng cách sử dụng cookie để theo dõi trạng thái phiên.
  • Form Handling: Hỗ trợ IdP authentication flow thông qua POST requests, đảm bảo an toàn cho các tham số xác thực.

Chi Tiết Cấu Hình

Field nameDescriptionData input
URL Callback Đăng NhậpLogin Callback URL là URL được sử dụng để xử lý phản hồi từ máy chủ xác thực sau khi người dùng đã đăng nhập thành công. Hệ thống chuyển hướng họ trở lại ứng dụng tại URL này để tiếp tục quá trình.Người dùng xác định
URL Đăng xuấtKhi người dùng thực hiện yêu cầu đăng xuất, hệ thống sẽ chuyển hướng đến URL này để:
- Kết thúc phiên người dùng.
- Xóa mã thông báo phiên xác thực hoặc dữ liệu phiên liên quan.
- Đảm bảo rằng người dùng đã đăng xuất khỏi tất cả các dịch vụ mà họ đã đăng nhập.
Người dùng định nghĩa
URL IDPIDP URL (URL Nhà cung cấp Danh tính) là URL của nhà cung cấp danh tính trong một hệ thống xác thực. IDP URL thường được cấu hình để:
- Xác định địa chỉ của máy chủ xác thực mà người dùng sẽ sử dụng để đăng nhập.
- Xử lý các yêu cầu xác thực và chuyển hướng người dùng đến trang đăng nhập chính xác.
Bước 1: Mở keycloak.
Bước 2: Chọn Realm.
Bước 3: Nhấp vào “Cài đặt Realm” trong menu bên trái.
Bước 4: Trong trường “Endpoints”, nhấp vào liên kết https://keycloak-saml.apimags.skcloud.io/realms/saml-test/protocol/saml/descriptor để được chuyển hướng đến cây tài liệu.
Bước 5: Lấy giá trị “Location” của md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect.
(Xem GHI CHÚ bên dưới bảng này.)
IsserIsser là:
- Một định danh duy nhất cho nhà cung cấp danh tính.
- Được bao gồm trong mã thông báo xác thực hoặc khẳng định để chỉ định quyền hạn xác minh danh tính của người dùng.
ID Khách hàng của Realm.
Chữ ký Khách hàngClient Signature là một chữ ký số được tạo ra bởi Khách hàng (khách hàng hoặc ứng dụng). Chữ ký Khách hàng thường được sử dụng để:

- Xác minh rằng yêu cầu đến từ một nguồn hợp lệ và đáng tin cậy.
- Bảo vệ dữ liệu khỏi bị thay đổi hoặc bị can thiệp trong quá trình truyền tải.
- Đảm bảo tính xác thực của Khách hàng khi tương tác với Nhà cung cấp Danh tính (IdP) hoặc các máy chủ khác.

Chữ ký này thường được tạo ra bằng cách sử dụng khóa riêng của Khách hàng, sau đó được máy chủ xác minh bằng khóa công khai tương ứng để đảm bảo tính hợp lệ.
Bước 1: Nhận Chữ ký Khách hàng từ liên kết này: https://www.notion.so/Certificates-f0e62572160243ce800473766d1e7a08?pvs=4
Bước 2: Xuất Chứng chỉ từ bảng điều khiển
Bước 3: Mở keycloak và chọn Realm.
Bước 4: Nhấp vào “Clients” trong menu bên trái.
Bước 5: Chọn tab “Keys”.
Bước 6: Bật “Yêu cầu Chữ ký Khách hàng” = ON để mở Popup “Có yêu cầu Chữ ký Khách hàng không?”.
Bước 7: Nhập tệp đã xuất ở bước 2.
Chứng chỉ IDPIDP Certificate (Chứng chỉ Nhà cung cấp Danh tính) là một chứng chỉ số được cấp bởi Nhà cung cấp Danh tính (IdP) được sử dụng để bảo mật và xác thực trong quá trình xác thực giữa IdP và các ứng dụng hoặc dịch vụ.
The IDP Certificate bao gồm một khóa công khai cho phép các bên nhận xác minh tính xác thực của các tin nhắn từ IdP
Bước 1: Mở keycloak.
Bước 2: Chọn Realm.
Bước 3: Nhấp vào “Cài đặt Realm” trong menu bên trái.
Bước 4: Trong trường “Endpoints”, nhấp vào liên kết https://keycloak-saml.apimags.skcloud.io/realms/saml-test/protocol/saml/descriptor để được chuyển hướng đến cây tài liệu.
Bước 5: Sao chép dữ liệu trong thẻ ds:X509Certificate.
Bước 6: Dán dữ liệu thu được ở bước 5 vào trường Chứng chỉ IDP.
ID chứng chỉ mã hóaIdP sử dụng ID Chứng chỉ Mã hóa để xác định chứng chỉ mã hóa chính xác khi gửi một tin nhắn đến SP, đảm bảo an toàn cho thông tin nhạy cảm trong quá trình truyền tải.Bước 1: Lấy Chữ ký Khách hàng từ liên kết: https://www.notion.so/Certificates-f0e62572160243ce800473766d1e7a08?pvs=4
Bước 2: Xuất Chứng chỉ từ bảng điều khiển
Bước 3: Mở keycloak và chọn Realm.
Bước 4: Nhấp vào “Khách hàng” trong menu bên trái.
Bước 5: Chọn tab “Khóa”.
Bước 6: Bật “Mã hóa các tuyên bố” = BẬT để mở cửa sổ “Có cần chữ ký Khách hàng không?”.
Bước 7: Nhập tệp đã xuất ở bước 2.
Máy chủ RedisRedis Host là địa chỉ của máy chủ Redis mà các ứng dụng cần kết nối để lưu trữ và truy xuất dữ liệu từ bộ nhớ cache.Người dùng xác định
Cổng RedisCổng Redis là cổng mạng mà máy chủ Redis sử dụng để lắng nghe và nhận kết nối từ các khách hàng.Người dùng xác định
URL Giao DiệnĐây là địa chỉ mà người dùng sử dụng để mở ứng dụng trong trình duyệt.Người dùng định nghĩa
Cho phép tiêu đềAllow Headers là các tiêu đề HTTP mà máy chủ cho phép trình duyệt sử dụng khi gửi yêu cầu đến máy chủ đó.Người dùng định nghĩa
Đường dẫn thực thiMột URL phải chứa đường dẫn này để xác thực được áp dụng.Người dùng định nghĩa

Lưu ý:

  • Ô văn bản chỉ cần thiết nếu Client Signature được đặt thành BẬT.
  • Ô văn bản Encryption cert id chỉ cần thiết nếu Encrypt assertions được đặt thành BẬT.