Phần 2: SAML (Security Assertion Markup Language)
6. Các Định Nghĩa Liên Quan Đến SAML
6.1. Single Sign-On (SSO)
Single Sign-On (SSO) hay Đăng Nhập Một Lần là một phương pháp xác thực người dùng cho phép truy cập vào nhiều ứng dụng và dịch vụ khác nhau mà không cần phải đăng nhập lại nhiều lần. Người dùng chỉ cần ghi nhớ một mật khẩu duy nhất, mạnh mẽ giúp bảo vệ thông tin xác thực từ Identity Provider (IdP).
Người dùng không cần phải dựa vào các công cụ ghi nhớ mật khẩu trực tuyến, viết ra và dán trên màn hình, hoặc sử dụng chức năng ghi nhớ mật khẩu của các website. Tất cả những phương pháp này đều tiềm ẩn nguy cơ mất tài khoản cao.
Để thực hiện chức năng đăng nhập một lần, hệ thống SSO cần liên lạc với các ứng dụng hoặc trang web bên ngoài để xác nhận rằng người dùng đã được xác thực và ủy quyền. Chính lúc này, SAML thể hiện rõ vai trò quan trọng của mình.
Ví dụ: Khi bạn đăng nhập vào một số trò chơi trực tuyến, chương trình sẽ yêu cầu bạn đăng nhập để lưu trữ thông tin. Bạn chỉ cần nhấn vào biểu tượng Facebook, xác nhận thông tin của mình, và như vậy, trò chơi trở thành một Service Provider (SP), còn Facebook là Identity Provider (IdP) xác thực bạn với trò chơi đó. Như vậy, bạn có thể sử dụng tài khoản Facebook để đăng nhập vào nhiều trò chơi và nhiều website khác nhau.
6.2. SAML Assertion
SAML Assertion (Xác Nhận SAML) là một tài liệu XML được sử dụng để xác nhận với SP rằng người dùng đang muốn truy cập đã được IdP xác thực.
Có ba loại xác nhận trong SAML:
- Xác Nhận Xác Thực: Thông tin xác thực người dùng, tháng thời gian mà họ đã đăng nhập và loại hình xác thực sử dụng (xác thực đa yếu tố hoặc mật khẩu).
- Xác Nhận Thuộc Tính: Truyền mã thông báo SAML cho SP bao gồm dữ liệu cụ thể về người dùng.
- Xác Nhận Quyết Định Ủy Quyền: Giúp SP biết người dùng đã được xác thực hay từ chối truy cập vào dịch vụ, hoặc có thể do thông tin xác thực không hợp lệ.
6.3. SAML 2.0
SAML 2.0 là phiên bản mới hơn và hiện đại của SAML, được phát triển dựa trên các phiên bản trước. Nó đã được sử dụng từ năm 2005 và hiện là phiên bản tiêu chuẩn mà nhiều hệ thống áp dụng, trong khi vẫn hỗ trợ cả phiên bản cũ (SAML 1.1).
7. So Sánh Các Phương Thức Xác Thực Khác Nhau
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 | Tùy 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 Server + Authorization Server + Client | Authentication Service (AS) + Ticket Granting Server (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 với 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ì |
Ví Dụ Sử Dụng | Ứng dụng doanh nghiệp như Salesforce, Google Workspace | Ứ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 đã tham khảo nguồn tài liệu từ bài viết trước.
source: viblo