909
29/09/2023

Thông tin cơ bản về OAuth 2.0 dành cho người mới bắt đầu

OAuth2 là giao thức quan trọng được nhiều lập trình viên sử dụng cho việc xác thực thông tin, ủy quyền cho các ứng dụng hay nền tảng khác nhau. OAuth2 là gì? Cách thức hoạt động của nó như thế nào? Cùng ICANTECH tìm hiểu các thông tin cơ bản về giao thức này trong bài viết dưới đây nhé!

1. Tổng quan về OAuth2

Phương thức chứng thực OAuth (Open Authorization) phiên bản 1.0 được thiết kế vào năm 2012. Sau đó OAuth2 là phiên bản nâng cấp của OAuth1 với nhiều tính năng ưu việt hơn. OAuth 2 được coi là tiêu chuẩn để thiết kế website hay ứng dụng thay mặt người dùng đăng nhập vào các dữ liệu được lưu ở các ứng dụng hoặc trang web khác.

1.1. Oauth2 là gì?

OAuth2 là giao thức cho phép các ứng dụng ủy quyền, xác thực, đăng nhập trên nhiều nền tảng và ứng dụng khác nhau mà không chia sẻ thông tin như username và password. OAuth2 hoạt động bằng cách ủy quyền xác thực của người dùng cho dịch vụ lưu trữ tài khoản. 

Tiếp theo, nó gửi thông tin ủy quyền cho các ứng dụng của bên thứ ba truy cập vào tài khoản người dùng đó. OAuth 2.0 cung cấp các luồng ủy quyền cho các ứng dụng web,máy tính, điện thoại.

1.2. Ứng dụng của OAuth2

OAuth2 có 2 ứng dụng sau:

  • Authentication - Xác thực:  Dùng để xác minh danh tính của người dùng
  • Authorization - Ủy quyền: Dùng để cấp quyền cho người dùng sử dụng nền tảng của họ

Ví dụ, bạn có thể tạo tài khoản Instagram bằng Facebook hoặc Gmail mà không cần thiết lập tài khoản mới. Đó chính là cách thức mà Oauth2 hoạt động.

1.3. Vai trò của OAuth2

OAuth2 có 4 vai trò như sau: 

  • Client: Là ứng dụng muốn truy cập vào tài khoản của người dùng. Để làm như vậy, nó phải được người dùng ủy quyền và việc ủy ​​quyền đó phải được xác thực bởi API.
  • Resource Owner: Là người dùng cuối, họ có quyền quyết định xem ai là người có khả năng truy cập vào tài khoản của họ. 
  • Resource Server: Là máy chủ tài nguyên, nơi lưu trữ các thông tin về tài khoản người dùng.
  • Authorization Server: Là máy chủ ủy quyền. Đây là đối tượng quyết định việc cấp quyền cho truy cập cho ứng dụng bằng các xác minh danh tính. Sau khi danh tính được xác minh chính xác server sẽ cấp mã truy cập cho Client. 

2. Cách hoạt động của OAuth2

Trước khi muốn dùng OAuth 2.0, Client phải có thông tin đăng nhập cá nhân để xác minh danh tính,  Authorization Server sẽ cung cấp client id và client secret làm nhận diện và xác minh bản thân trước khi yêu cầu mã Access token.

Khi sử dụng OAuth 2.0,  những yêu cầu truy cập do client khởi tạo,  sẽ yêu cầu mã token, trao đổi và xác thực tuân thủ theo quy trình như sau:

  • Client sẽ gửi request tới Authorization Server ủy quyền, sau đó Client sẽ xác nhận bằng 2 thứ là: client ID và secret. Cùng lúc đó nó đưa ra các scope và endpoint URI (redirect URL) để chuyển tiếp Access Token hoặc Authorization Code. 
  • Authorization Server xác thực client và đảm bảo rằng scope yêu cầu được chấp nhận.
  • Resource owner tương tác với Authorization Server để cung cấp quyền truy cập.
  • Authorization Server chuyển hướng về client với Authorization Code or Access Token, tuỳ theo loại. 
  • Với Access Token, client yêu cầu quyền truy cập đến tài nguyên từ máy Resource server.

Các loại tài trợ trong OAuth 2.0

cach-haot-dong-cua-oauth-2

3. Ưu và nhược điểm OAuth 2

3.1. Ưu điểm

  • Phiên bản Oauth2 được xem là một giao thức linh hoạt được xây dựng dựa trên SSL, được thiết kế để giúp bảo mật toàn bộ sự riêng tư của server web và trình duyệt. Phiên bản này giúp lưu trữ token cho các truy vấn người dùng trở nên nhanh chóng hơn và thuận tiện. 
  • Xác thực nhanh hơn và an toàn hơn phiên bản cũ. 
  • Cho phép truy cập giới hạn vào dữ liệu của người dùng và cho phép truy vấn khi authorization token hết hạn. 
  • Chia sẻ dữ liệu cho người dùng khác không yêu cầu username hay password. 

3.2. Nhược điểm

  • Nếu ứng dụng hay web của người dùng có liên kết với các trung tâm và tài khoản trung tâm bị hack, các trang web cùng chung liên kết sẽ bị ảnh hưởng.

4. Các loại Grant Type trong Oauth2

Một số dạng grant  trong Oauth2:

  • Authorization Code grant: Authorization server trả mã Authorization Code cho Client, từ đó chuyển đổi thành Access Token. Đây là tùy chọn phổ biến nhất đối với các ứng dụng web truyền thống được xảy ra một cách ẩn danh ở server. Authorization Code có thể được sử dụng trong ứng dụng Single Page (SPA) và ứng dụng dành cho thiết bị di động hoặc ứng dụng gốc. 

Tuy nhiên, client secret không được lưu giữ ẩn danh ở server, vì vậy việc xác thực danh tính chỉ dừng ở việc sử dụng client id riêng biệt. Một giải pháp thay thế an toàn khác là Authorization Code with PKCE grant. 

Các loại Grant Type trong OAuth2

  • Authorization Code Grant with Proof Key for Code Exchange (PKCE): Quy trình uỷ quyền này hoạt động gần giống với Authorization Code grant. Ngoài ra, nó thêm một vài bước nữa để  tăng cường tính bảo mật dữ liệu đối với những ứng dụng di động, bao gồm native app và SPA. 
  • Resource Owner Credentials Grant Type: Khi sử dụng Grant Type này, client phải được dũ liệu xác thực của resource owner, được gửi đến Authorization Server. Việc này được thực hiện bởi các Nhà cung cấp nên hoàn toàn đáng tin tưởng. Nó có lợi thế là không ảnh hưởng của chuyển hướng đến Authorization server, do đó nó được dùng trong những tình huống sử dụng chuyển hướng không khả thi. 
  • Implicit Grant: Implicit Grant là một loạt các thao tác rút gọn, trong đó Access token được gửi lại tới thẳng client. Authorization server có thể trả về một Access token dưới dạng tham số trong callback URI hoặc dưới dạng biểu mẫu trong Implicit flow. Tuy nhiên, hiện nay mã token không được dùng nhiều vì khả năng gây lộ mã cao. 
  • Client Credentials Grant: Client Credentials Grant là loại Grant sử dụng cho những ứng dụng không có khả năng tương tác. Trong các tình huống này, ứng dụng được mã hoá theo mỗi ứng dụng bằng việc sử dụng client id và secret. Điển hình như các hệ thống tự động hoá, microservices, . .. 
  • Refresh Token Grant: Quy trình liên quan đến việc đổi Refresh Token thành Access Token. Grand Type này sẽ cung cấp Access Token mới khi hết hạn.
  • Tóm lại OAuth2 là một giao thức quan trọng trong việc xác thực và ủy quyền. Tuy nhiên trong bài viết trên chỉ đề cập tới luồng hoạt động và những thông tin cơ bản về OAuth2 để giúp bạn hiểu thêm về giao thức này. Để thực hiện chi tiết bạn đọc có thể tìm kiếm thêm trên Google để biết cách thức triển khai theo ngôn ngữ lập trình cho sản phẩm của mình đang sử dụng.

Nguồn ảnh: ICANTECH

Share

Bài tương tự