Các loại grant types trong OAuth 2.0

Grant type là cách mà Authorization Server của OAuth 2.0 có thể process và xác nhận rằng Client Application đủ điều kiện để có thể access tới Resource Server. Có tất cả 4 loại grant type mà OAuth 2.0 định nghĩa trong spec của mình, đó là:

  • Authorization Code
  • Implicit
  • Resource Owner Password Credentials
  • Client Credentials

Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết cho mỗi loại grant type các bạn nhé!


Authorization Code

Với grant type này, Client Application sẽ request authorization code từ Authorization Server và sử dụng nó để xác nhận với Resource Server để có thể sử dụng resource mà nó muốn sử dụng. Cụ thể quá trình grant type của Authorization Code sẽ diễn ra như sau:

Các loại grant type trong OAuth 2.0

Grant type Authorization Code thường được sử dụng khi các ứng dụng thứ 3 cần truy cập vào hệ thống của chúng ta. Chúng ta có thể refresh token sau một khoảng thời gian nào đó để tăng tính bảo mật.

OAuth 2.0 Security Best Current Practice khuyên chúng ta nên sử dụng grant type này với PKCE https://datatracker.ietf.org/doc/html/draft-ietf-oauth-security-topics#section-2.1.1. Các bạn có thể xem thêm về grant type Authorization Code với PKCE tại đây nhé.


Implicit

Grant type này giống với grant type Authorization Code phần lớn, ngoại trừ một điểm là Authorization Server sẽ không trả về authorization code cho Client Application mà sẽ trả về access token luôn ngay khi chúng ta đăng nhập vào Authorization Server.

Điều này có nghĩa access token không được lưu trữ bảo mật trên Client Application mà bây giờ, chúng ta có thể thấy được access token luôn.

Cụ thể, quá trình grant type sử dụng Implicit sẽ diễn ra như sau:

Các loại grant types trong OAuth 2.0

OAuth 2.0 Security Best Current Practice khuyên chúng ta không nên sử dụng grant type này https://datatracker.ietf.org/doc/html/draft-ietf-oauth-security-topics#section-2.1.2, hãy sử dụng grant type Authorization Code với PKCE thay thế các bạn nhé!


Resource Owner Password Credentials

Với grant type này thì chúng ta phải tin tưởng Client Application hoàn toàn, vì chúng ta sẽ phải đăng nhập vào Client Application sử dụng thông tin đăng nhập vào Authorization Server. Client Application khi đó sẽ nắm được thông tin đăng nhập của chúng ta.
Các loại grant type trong OAuth 2.0

Chỉ sử dụng grant type này nếu thật sự cần thiết thôi các bạn nhé!

OAuth 2.0 Security Best Current Practice khuyên chúng ta không nên sử dụng grant type này https://datatracker.ietf.org/doc/html/draft-ietf-oauth-security-topics-13#section-3.4

Client Credentials

Grant type này được sử dụng cho các Client Application có thể lấy access token mà không cần phải thông qua user. Chúng ta sẽ sử dụng một cặp client ID và client secret để làm điều này.

Add Comment