Sự Khác Nhau Giữa OpenID Connect Và OAuth 2.0 | TopDev
Có thể bạn quan tâm
Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh
Mình đã giới thiệu với các bạn về OAuth 2.0 và OAuth 2.0 chỉ là một framework liên quan đến Authorization, nghĩa là nó chỉ định nghĩa những resources nào mà một Client Application có thể sử dụng trong access token, để khi request tới Resource Server, Resource Server sẽ căn cứ vào access token để quyết định có cho phép Client Application access tới resource hay là không?
Authorization Code grant type với Proof Key for Code Exchange (PKCE) trong OAuth 2.1 Building Microservices Application - Phần 3: Xác thực API bằng Oauth 2.0Thế nhưng nói về security, các bạn có thể biết, chúng ta còn có cả authentication và OpenID Connect là một extension của OAuth 2.0 được giới thiệu để bổ sung phần authentication này. Sử dụng OpenId Connect thì nội dung của access token mà Client Application sử dụng để request tới Resource Server sẽ bao gồm cả thông tin user đang grant quyền truy cập tới những resources này.
Trong OpenID Connect thì Authorization Server được gọi là Identity Provider. Identity Provider sẽ đảm nhận chức năng authentication và authorization.
Access token được issue bởi một Identity Provider như mình đã nói, sẽ chứa thông tin của authenticated user, những thông tin này gọi là Idenitity Token hay gọi tắt là ID token.
Dưới đây là nội dung của một access token mà mình đã decode sử dụng trang web https://jwt.io/:
{ "exp": 1625973312, "iat": 1625973012, "jti": "57e9401f-c98b-43a3-9b5e-eb7bff182a5f", "iss": "http://localhost:8080/auth/realms/huongdanjava", "aud": "account", "sub": "8a5092fa-d815-4620-92ab-4ac87542685c", "typ": "Bearer", "azp": "angular-test", "session_state": "0e044481-02e3-4962-adaa-0683c2c26fbf", "acr": "1", "realm_access": { "roles": [ "offline_access", "uma_authorization", "default-roles-huongdanjava" ] }, "resource_access": { "account": { "roles": [ "manage-account", "manage-account-links", "view-profile" ] } }, "scope": "email profile", "email_verified": false, "name": "Khanh Nguyen", "preferred_username": "huongdanjava", "locale": "en", "given_name": "Khanh", "family_name": "Nguyen", "email": "huongdanjava.com@gmail.com" }Phần nội dung phía dưới claim ‘scope’, mà mình đánh dấu trong access token ở trên, chính là nội dung của ID token đó các bạn. Các bạn có thể thấy đây là những thông tin về user đã đăng nhập và grant access cho Client Application. Các bạn có thể xem thông tin những standard claims của ID token tại đây.
Các open source Identity and Access Management hiện nay ví dụ như Keycloak đều hiện thực OpenID Connect luôn chứ không chỉ OAuth 2.0.
Bài viết gốc được đăng tải tại huongdanjava.com
Có thể bạn quan tâm:
- Xác thực và phân quyền trong Microservices
- Sự khác nhau giữa npm và npx?
- Kết nối Database động với PHP, Dynamic Database Connection!
Xem thêm Việc làm IT hấp dẫn trên TopDev
Từ khóa » Jwt Và Oauth2
-
OAuth Và JWT: Đừng Hiểu Nhầm - Vantien's Blog
-
Tìm Hiểu Về Cơ Chế Xác Thực OAuth2 - Viblo
-
Thắc Mắc - Khi Nào Mới Thực Sự Cần Sử Dụng OAuth2? - Voz
-
What Are The Main Differences Between JWT And OAuth ...
-
How To Use JWT With OAuth | LoginRadius Blog
-
OAuth2 Vs JWT - What's The Difference (Explained)
-
JSON Web Tokens Vs Oauth 2.0 - Anil Kumar - Medium
-
OAuth 2.0 Là Gì? Tìm Hiểu Cơ Chế Và Cách Hoạt động đăng Nhập
-
Đi Sâu Vào OAuth2.0 Và JWT (Phần 1 Thiết Lập Sân Khấu) - HelpEx
-
OAuth2 With Password (and Hashing), Bearer With JWT Tokens
-
Xác Thực Người Dùng Với JWT Cho Web API - CodeLearn
-
Sử Dụng JWT Với Spring Security OAuth - 2KVN
-
Tìm Hiểu OAuth2 Với OpenID Connect