OAuth là gì và nó hoạt động như thế nào?

OAuth là gì và nó hoạt động như thế nào?

OAuth là một tiêu chuẩn mở cho phép cấp quyền truy cập vào tài nguyên của người dùng trên một hệ thống, cho một ứng dụng khác, mà không cần phải cung cấp thông tin đăng nhập của người dùng cho ứng dụng đó.

For Zapier, the user's email address is requested before any password.

Ví dụ: Khi bạn sử dụng nút "Đăng nhập bằng Facebook" trên một trang web, trang web đó sẽ không yêu cầu bạn nhập tên người dùng và mật khẩu Facebook. Thay vào đó, trang web sẽ chuyển hướng bạn đến Facebook để bạn cho phép trang web đó truy cập vào một số thông tin nhất định của bạn.

OAuth 2.0, được phát hành vào năm 2012, là phiên bản phổ biến nhất hiện nay. Tuy nhiên, OAuth 2.1, một bản cập nhật đang được đề xuất, nhằm mục đích củng cố các phương pháp hay nhất về bảo mật và đơn giản hóa việc triển khai OAuth.

OAuth 2.1 không giới thiệu tính năng mới nào mà tập trung vào việc cải thiện bảo mật và loại bỏ một số grant (phương thức cấp quyền) kém an toàn hơn trong OAuth 2.0.

Một số thay đổi chính trong OAuth 2.1 bao gồm:

  • Bắt buộc sử dụng PKCE (Proof Key for Code Exchange) với Authorization Code grant: PKCE bảo vệ chống lại việc mã authorization bị đánh cắp bằng cách yêu cầu một mã dùng một lần được tạo và gửi đến máy chủ OAuth.

  • So khớp chính xác Redirect URI: Loại bỏ khả năng sử dụng ký tự đại diện trong redirect URI để ngăn chặn các cuộc tấn công chuyển hướng mở.

  • Loại bỏ Implicit grant: Implicit grant được coi là không an toàn, đặc biệt là trong các ứng dụng trang đơn (SPA).

  • Loại bỏ Resource Owner Password Credentials grant: Grant này yêu cầu ứng dụng xử lý thông tin đăng nhập của người dùng, điều này đi ngược lại mục tiêu bảo mật của OAuth.

  • Cấm sử dụng bearer token trong chuỗi truy vấn: Bearer token (access token) phải được bảo mật và không nên được truyền trong chuỗi truy vấn URL, nơi chúng có thể bị lộ.

  • Giới hạn refresh token: Refresh token cho phép khách hàng nhận access token mới mà không cần xác thực lại. OAuth 2.1 yêu cầu refresh token là một lần sử dụng hoặc được liên kết với người gửi bằng cách sử dụng các phương pháp như OAuth token binding hoặc Mutual TLS.

Mặc dù OAuth 2.1 vẫn đang được thảo luận và chưa được phát hành chính thức, bạn có thể áp dụng các phương pháp hay nhất được nêu trong bản nháp để cải thiện bảo mật ứng dụng của mình.