- vừa được xem lúc

[Phần 2] SAML (Security Assertion Markup Language)

0 0 10

Người đăng: Ahnaxor

Theo Viblo Asia

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.

*Nguồn: FPT Smart Cloud*

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.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Có thực sự an toàn với Authentication và Authorization , mật khẩu có nên lưu ở dạng text ?

Có thực sự an toàn với Authentication và Authorization , mật khẩu có nên lưu ở dạng text . Hơn nữa, vì chúng ta đang lưu trữ thông tin đăng nhập và hỗ trợ quy trình đăng nhập, chúng ta biết rằng sẽ có thông tin xác thực được gửi qua hạ tầng mạng.

0 0 58

- vừa được xem lúc

Login LINE với Firebase Authentication

Ngày nay, khi sử dụng một dịch vụ online online, chúng ta có xu hướng sử dụng một tài khoản liên kết (Google, Facebook, Twitter... tạm gọi là bên thứ 3) để đăng nhập vào dịch vụ đó thay vì cứ mỗi một dịch vụ, ta lại tạo một account/passord riêng. Lúc này Firebase Authentication (từ đây sẽ gọi tắt là

0 0 46

- vừa được xem lúc

Bài 17: Phân quyền trong Laravel

Chào mừng các bạn quay trở lại với series học Laravel với VueJS của mình, ở bài này mình sẽ hướng dẫn các bạn các phân quyền bằng Laravel và VueJS mà không cần cài đặt thêm bất kì package hay library

0 0 95

- vừa được xem lúc

Phân biệt sự khác nhau giữa Authentication và Authorization

Có lẽ trong quá trình lập trình bạn đã được nghe rất nhiều về 2 khái niệm authentication và authorization nhưng liệu bạn đã phân biệt được sự khác nhau giữa 2 khái niệm này? hay đôi khi bạn vẫn mập mờ

0 0 48

- vừa được xem lúc

[Node JS + React JS] - Phần 2 - Authentication server

Hôm nay chúng ta sẽ tiếp tục serie Node JS + React JS với chủ đề là authentication + authorization. Hôm nay chúng ta cùng đi tìm hiểu hai khái niệm cơ bản là Authentication và Authorization, cũng như

0 0 404

- vừa được xem lúc

API với Postman (Phần 3)

Sau 2 bài viết, chúng ta đã hiểu thế nào là client và server, cách chúng sử dụng HTTP để nói chuyện với nhau và việc xác định định dạng dữ liệu để hiểu nhau. Có lẽ trong đầu chúng ta sẽ có câu hỏi: Là

0 0 85