Mục lục nội dung
Authentication và Authorization
Trước tiên chúng ta cần phân biệt rõ hai khái niệm cơ bản trong phát phần mềm đó là authentication (xác thực) và authorization (trao quyền):
- Authentication là việc xác thực danh tính của một người nào đó. Ví dụ khi bạn thực hiện việc đăng nhập vào một tài khoản trên một website sử dụng username và password thì việc đăng nhập này dùng để xác thực danh tính người dùng.
- Authorization là việc người dùng U trao cho một ứng dụng A sử dụng các quyền của người dùng U này có trên một ứng dụng S. Ví dụ khi bạn trao quyền cho một website xem phim (ứng dụng A) quyền lấy các thông tin như email, họ và tên, ngày tháng năm sinh… của mình có trên Facebook (ứng dụng S). Tất nhiên khi đó bạn cần phải có một tài khoản Facebook trước đó.
Hiểu về hai khái niệm authentication và authorization ở trên sẽ giúp chúng ta dễ dàng tiếp cận tới hai khái niệm là OpenID và OAuth hơn.
OpenID Là Gì
OpenID là một tiêu chuẩn mở (open standard) dùng cho việc xác thực người dùng thông qua các nhà cung cấp dịch vụ OpenID còn được gọi là OpenID provider (như Google, Facebook, Twitter…) được sử dụng trong việc xác thực. OpenID được hỗ trợ phát triển bởi tổ chức phi lợi nhuận OpenID Foundation.
Bạn đang đọc: OpenID và OAuth Khác Nhau Như Thế Nào
Với sự tăng trưởng của những trang mạng xã hội như Facebook, Twitter, Google Plus thì OpenID đã và đang được sử dụng phổ cập hơn trong việc xác nhận người dùng. Cho tới nay thống kê số lượng những account sử dụng trải qua OpenID Provider là hơn 1 tỷ thông tin tài khoản .
Việc ứng dụng OpenID vào phát triển ứng dụng (A) về bản chất thực ra chính là việc ứng dụng A thông qua một tải khoản đã có của người dùng U được đăng ký trên OpenID provider để thay cho việc đăng ký tài khoản mới trên A. Thông qua OpenID Provider, ứng dụng A xác thực được người dùng U mà không cần phải đăng ký tài khoản trên A. Như vậy sử dụng một tài khoản duy nhất được đăng ký bởi OpenID Provider người dùng có thể sử dụng để xác thực (đăng nhập) trên nhiều ứng dụng khác nhau mà không cần đăng ký tài khoản trên từng ứng dụng này.
Khi ứng dụng A sử dụng OpenID để xác thực người dùng thì quy trình diễn ra khá đơn giản như sau:
Xem thêm: LGBTQI+ có nghĩa là gì?
- Ứng dụng A chuyển tiếp người dùng về một URL của OpenID provider để đăng nhập.
- Nếu đăng nhập thành công OpenID Provider sẽ chuyển tiếp người dùng về trang của ứng dụng A và thông báo với ứng dụng này rằng người dùng U đã được xác thực.
- Cuối cùng ứng dụng A thực hiện việc xác thực người dùng U mà không cần đăng nhập (vì A tin vào kết quả trả về của OpenID Provider).
OAuth Là Gì
OAuth là tiêu chuẩn mở được dùng trong việc trao quyền cho một ứng dụng ( client ) truy vấn những dịch vụ của ứng dụng khác ( service provider ) .
Ví dụ như khi bạn được một ứng dụng A ( hay client A ) nhu yếu bạn phân phối thông tin như email, họ và tên, nơi sinh, nghề nghiệp từ thông tin tài khoản Facebook ( service provider ) của bạn. Lúc này nếu bạn trao quyền cho ứng dụng A quyền lấy những thông tin trên thì Facebook service provider sẽ được cho phép A lấy những thông tin này được lưu trên server của Facebook .
Ở đây quy trình tiến độ sẽ diễn ra như sau :
- Trước tiên client A cần đăng ký một tài khoản trên Facebook service provider. Sau khi đăng ký Facebook sẽ cung cấp cho Client A một Application ID và một Application secret. Facebook sẽ dựa trên App ID và App Secret xác thực được các app đã đăng ký trên trang này.
- Khi người sau đó truy cập vào ứng dụng A và được ứng dụng này yêu cầu trao cho quyền để lấy các thông tin như email, họ tên, năm sinh… trên Facebook. Ứng dụng thực hiện việc này bằng cách chuyển tiếp người dùng về một địa chỉ trên trang Facebook service provider (Ví dụ
https://www.facebook.com/v2.8/dialog/oauth?response_type=token&display=popup&client_id=145634995501895&redirect_uri=https%3A%2F%2Fdevelopers.facebook.com%2Ftools%2Fexplorer%2Fcallback&scope=email
). - Trên trang của Facebook service provider, nếu người dùng đồng ý trao quyền, Facebook sẽ tạo ra một access token cho ứng dụng A.
- Ứng dụng A sau đó sử dụng access token vừa lấy được ở trên cùng với application ID và application secrete để gửi request tới Facebook lấy về các thông tin được người dùng cho phép truy cập.
Như vậy bạn thấy rằng với OpenID, ứng dụng của bạn không cần phải ĐK trên OpenID provider mà vẫn hoàn toàn có thể sử dụng dịch vụ của OpenID provider. trái lại thì với OAuth, service provider sẽ nhu yếu ứng dụng ĐK một thông tin tài khoản trước khi hoàn toàn có thể sử dụng dịch vụ ( với sự đồng ý chấp thuận được cho phép của người dùng ) .
Source: https://blogchiase247.net
Category: Hỏi Đáp