[Phần 2] SAML (Security Assertion Markup Language)
6. Các định nghĩa liên quan
6.1. Single Sign-On (SSO)
- Single Sign-On / Đăng nhập một lần: phương pháp xác thực người dùng cho nhiều ứng dụng và dịch vụ cùng một lúc. Người dùng chỉ cần ghi nhớ, sử dụng một mật khẩu duy nhất, mạnh nhất để bảo vệ thông tin xác thực IdP của mình.
- Người dùng không cần phải sử dụng những công cụ hỗ trợ ghi nhớ mật khẩu online, hay viết rồi dán vào màn hình máy tính, hay sử dụng chức năng nhớ mật khẩu của website (những điều này đều là những phương pháp dễ khiến bạn bị mất tài khoản).
- Để có thể đăng nhập một lần, hệ thống SSO cần liên lạc với những ứng dụng / web bên ngoài để thông báo rằng người dùng đã được xác thực và ủy uyền. Lúc này, SAML mới phát huy chức năng của nó.
Ví dụ: Khi bạn đăng nhập một số trò chơi thì chương trình thường yêu cầu bạn đăng nhập để lưu trữ thông tin. Và bạn chỉ cần ấn Facebook, rồi vào đó xác nhận đúng là bạn. Khi đó, trò chơi giống như một SP, Facebook giống như một IdP giúp bạn (User) xác thực bạn với trò chơi kia. Hiển nhiên rằng bạn có thể sử dụng Facebook để đăng nhập nhiều hơn một trò chơi và nhiều hơn một website.
6.2. SAML assertion
SAML Assertion (Xác nhận SAML): tài liệu XML (Extensible Markup Language) để xác nhận với SP rằng User đang muốn truy cập này đã được IdP xác thực.
Có 3 loại assertion:
- Xác nhận xác thực: xác thực User, gồm thời gian User đăng nhập và loại xác thực họ sử dụng (xác thực đa yếu tố/ mật khẩu).
- Xác nhận thuộc tính: truyền mã thông báo SAML cho SP, gồm dữ liệu cụ thể về User.
- Xác nhận quyết định ủy quyền: để SP biết được User đã được xác thực hay bị từ chối đối với dịch vụ đó, hoặc có thể do thông tin xác thực chưa được hợp lệ.
6.3. SAML 2.0
- Một phiên bản hiện đại của SAML, là sự cải tiến của những phiên bản SAML trước.
- Được sử dụng từ 2005.
- Nhiều hệ thống hỗ trợ phiên bản cũ (SAML 1.1) nhưng phiên bản SAML 2.0 là phiên bản tiêu chuẩn của hiện đại.
7. Các biện pháp xác thực khác
Phương thức xác thực | SAML | OpenID Connect | OAuth2 | Kerberos |
---|---|---|---|---|
Mục đích chính | Xác thực và ủy quyền dựa trên XML | Xác thực hiện đại dựa trên OAuth2 | Ủy quyền mà không cần xác thực | Xác thực dựa trên Ticket |
Loại xác thực | SSO | SSO | Authorization | SSO |
Mức độ bảo mật | Cao, sử dụng chữ ký số và mã hóa | Cao, sử dụng JWT và mã hóa | Phụ thuộc vào triển khai | Cao, sử dụng mã hóa và Ticket ngắn hạn |
Môi trường ứng dụng | Doanh nghiệp, web | Ứng dụng web, mobile | API, web | Mạng nội bộ doanh nghiệp |
Thành phần | Identity Provider (IDP) + Service Provider (SP) + User | OAuth2 + UserInfo Endpoint | Resource Sever + Authorization Sever + Client | Authentication Service (AS) + Ticket Granting Sever (TGS) + Client |
Ưu điểm | Hỗ trợ SSO + Bảo mật cao | Đơn giản hóa tích hợp với OAuth2 + Dễ dàng tích hợp với các dịch vụ hiện đại | Linh hoạt và dễ mở rộng + Hỗ trợ nhiều loại client | Bảo mật cao + Hiệu quả trong môi trường nội bộ |
Nhược điểm | Phức tạp trong triển khai và bảo trì | Có thể phức tạp nếu không quen thuộc OAuth2 | Không phải giao thức xác thực, cần kết hợp một phương thức xác thực | Khó triển khai và bảo trì + Chỉ hiệu quả trong mạng nội bộ |
Ví dụ sử dụng | Các ứng dụng doanh nghiệp như Salesforce, Google Workspace | Các ứng dụng web và mobile như Google, Facebook | Ủy quyền truy cập API như Google APIs, GitHub API | Trong môi trường nội bộ doanh nghiệp |
8. Nguồn tham khảo
- OASIS Standard
- OpenID Foundation
- Internet Engineering Task Force (IETF)
- Massachusetts Institute of Technology (MIT)
Ngoài ra, mình cũng sử dụng nguồn tài liệu ở bài trước.
All Rights Reserved