Apidog

Nền tảng phát triển API hợp tác tất cả trong một

Thiết kế API

Tài liệu API

Gỡ lỗi API

Giả lập API

Kiểm thử API tự động

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

Bài viết này cung cấp khái niệm cơ bản về OAuth 2.0, giải thích các vai trò, luồng, token và các phương pháp triển khai tốt nhất giúp bảo đảm quyền truy cập ủy quyền an toàn.

Minh Triết

Minh Triết

Updated on tháng 11 29, 2024

OAuth 2.0 đã trở thành giao thức tiêu chuẩn cho ủy quyền trong bối cảnh phức tạp này, thiết lập các kết nối tin cậy giữa các nền tảng khác nhau. Bài viết này cung cấp một cái nhìn tổng quan về OAuth 2.0, giải thích các vai trò, quy trình, token và những thực tiễn tốt nhất trong triển khai nhằm enable truy cập phân quyền an toàn.

OAuth 2.0 là gì

OAuth 2.0 là một khuôn khổ ủy quyền cho phép các ứng dụng bên thứ ba truy cập các tài nguyên của người dùng trên một máy chủ mà không cần người dùng chia sẻ thông tin xác thực của họ. Nó cung cấp một cách an toàn và tiêu chuẩn hóa cho người dùng để cấp quyền truy cập vào dữ liệu của mình cho các ứng dụng khác mà không làm lộ thông tin đăng nhập của họ.

OAuth 1 và OAuth 2

OAuth 2.0 đã trở thành tiêu chuẩn cho ủy quyền, cải tiến các phiên bản trước đó với độ bảo mật, tính linh hoạt và đơn giản hơn.

OAuth 1.0 vẫn được sử dụng rộng rãi, đặc biệt là trong các nền tảng mạng xã hội ra đời sớm. Nó cho phép truy cập API ủy quyền thông qua các access token tạm thời mà không làm lộ thông tin xác thực của người dùng. Trong khi OAuth 1.0 vẫn được sử dụng, hầu hết các triển khai hiện đại hiện nay đều tận dụng OAuth 2.0 để có độ bảo mật và sự tiện lợi vượt trội khi tích hợp các nền tảng và nguồn dữ liệu khác nhau.

Dưới đây là cái nhìn nhanh về những khác biệt chính giữa OAuth 1.0 và OAuth 2.0:

OAuth 1.0:

  • Được phát hành vào năm 2007.
  • Sử dụng chữ ký mã hóa cho ủy quyền. Mỗi yêu cầu phải được ký bằng một khóa bí mật và thuật toán băm.
  • Hỗ trợ ủy quyền ba bước với khóa người tiêu dùng, bí mật người tiêu dùng, mã thông báo yêu cầu và mã thông báo truy cập.
  • Các loại grant chính là để truy cập các tài nguyên được bảo vệ từ phía chủ tài nguyên.
  • Được xem là phức tạp hơn để ký từng cuộc gọi API.

OAuth 2.0:

  • Được phát hành vào năm 2012 như một lựa chọn đơn giản hơn.
  • Sử dụng mã thông báo truy cập với ủy quyền bearer token. Các token đóng vai trò như các chìa khóa để truy cập tài nguyên.
  • Hỗ trợ ủy quyền bốn bước với quy trình cấp mã ủy quyền cho các ứng dụng.
  • Định nghĩa các quy trình ủy quyền cụ thể cho các ứng dụng web, ứng dụng di động, v.v.
  • Bao gồm hỗ trợ gốc cho các mã thông báo truy cập JWT.
  • Triển khai phía khách hàng đơn giản hơn mà không cần chữ ký cho từng cuộc gọi.

OAuth 2.0 trong Apidog

Apidog là một công cụ quản lý API mạnh mẽ với giao diện người dùng trực quan để dễ dàng lấy và quản lý mã thông báo truy cập OAuth 2.0. Chỉ với một cú nhấp chuột, bạn có thể nhận được một mã thông báo truy cập và tiêu đề sẽ tự động được điền cho các yêu cầu. Ngày hết hạn của token được hiển thị rõ ràng, và bạn có thể làm mới mã thông báo bằng một cú nhấp chuột khi cần, điều này rất tiện lợi cho việc kiểm tra các API được xác thực bằng OAuth 2.0.

button

Google OAuth 2.0

Google sử dụng giao thức OAuth 2.0 để cho phép người dùng cấp quyền truy cập vào dữ liệu tài khoản Google của họ cho các ứng dụng hoặc dịch vụ bên thứ ba mà không cần tiết lộ tên người dùng và mật khẩu Google của họ. Hướng dẫn chi tiết cho bạn tham khảo.

Các vai trò chính của OAuth 2.0

OAuth 2.0 định nghĩa một số vai trò chính tham gia vào quá trình ủy quyền. Mỗi vai trò có trách nhiệm riêng và đóng một vai trò quan trọng trong việc đảm bảo tính bảo mật và chức năng của giao thức OAuth 2.0. Hãy cùng xem xét kỹ các vai trò này:

  1. Chủ tài nguyên: Cấp quyền truy cập vào các tài nguyên được bảo vệ.
  2. Khách hàng: Yêu cầu quyền truy cập vào tài nguyên thay mặt cho chủ tài nguyên.
  3. Máy chủ ủy quyền: Xác thực chủ tài nguyên và cấp mã thông báo truy cập.
  4. Máy chủ tài nguyên: Lưu trữ các tài nguyên được bảo vệ, xác thực mã thông báo truy cập.
  5. User Agent: Giao diện cho chủ tài nguyên tương tác với khách hàng và máy chủ ủy quyền.

OAuth 2.0 hoạt động như thế nào

OAuth 2.0 là một khuôn khổ ủy quyền mạnh mẽ cung cấp một cách an toàn và tiêu chuẩn hóa cho người dùng cấp quyền cho các ứng dụng bên thứ ba. Nó cung cấp tính linh hoạt, khả năng mở rộng và sự chấp nhận rộng rãi, khiến nó trở thành sự lựa chọn lý tưởng cho nhiều ứng dụng yêu cầu truy cập an toàn vào tài nguyên của người dùng. Tuy nhiên, điều quan trọng là hiểu và triển khai các biện pháp bảo mật cần thiết để đảm bảo tính toàn vẹn và bảo mật của dữ liệu người dùng.

OAuth 2.0 thường được sử dụng trong các trường hợp mà người dùng muốn cấp quyền truy cập vào dữ liệu của họ cho các ứng dụng bên thứ ba, chẳng hạn như tích hợp mạng xã hội, đăng nhập một lần và kiểm soát truy cập API. Nó cho phép người dùng dễ dàng quản lý và thu hồi các quyền đã cấp cho các ứng dụng bên thứ ba, đảm bảo sự riêng tư và an toàn cho dữ liệu của họ.

Ví dụ về OAuth 2.0

Mục tiêu chính của OAuth 2.0 là cung cấp một cách an toàn và hiệu quả để người dùng cấp quyền cho các ứng dụng bên thứ ba truy cập tài nguyên của họ, như tài khoản mạng xã hội, lưu trữ đám mây, hoặc các dịch vụ web khác. Nó loại bỏ sự cần thiết cho người dùng chia sẻ mật khẩu của họ với các ứng dụng bên thứ ba, giảm nguy cơ bị đánh cắp thông tin xác thực và truy cập không hợp lệ.

OAuth 2.0 giới thiệu khái niệm về mã thông báo truy cập, được cấp bởi máy chủ ủy quyền sau khi người dùng cấp quyền cho ứng dụng khách. Những mã thông báo truy cập này sau đó được ứng dụng khách sử dụng để xác thực và ủy quyền các yêu cầu đến máy chủ tài nguyên thay mặt cho người dùng. Điều này cho phép ứng dụng khách truy cập vào tài nguyên của người dùng mà không trực tiếp xử lý thông tin xác thực của họ. Có một hướng dẫn chi tiết về cách sử dụng Postman OAuth 2.0.

Quy trình ủy quyền OAuth 2.0

OAuth 2.0 là một khuôn khổ ủy quyền cho phép người dùng cấp quyền truy cập vào các tài nguyên của họ trên một trang web cho một trang web khác mà không cần chia sẻ thông tin xác thực của họ. Nó cung cấp một cách an toàn và tiêu chuẩn cho người dùng ủy quyền cho các ứng dụng bên thứ ba truy cập dữ liệu của họ trên nhiều nền tảng, chẳng hạn như các trang mạng xã hội hoặc dịch vụ lưu trữ đám mây.

Luồng ủy quyền OAuth 2.0 bao gồm nhiều bước:

  1. Người dùng khởi động quy trình: Người dùng bắt đầu quy trình ủy quyền bằng cách nhấp vào một nút hoặc liên kết do ứng dụng bên thứ ba cung cấp. Điều này có thể là một nút "Đăng nhập bằng Google" hoặc "Kết nối với Facebook".
  2. Chuyển hướng đến máy chủ ủy quyền: Người dùng được chuyển hướng đến máy chủ ủy quyền, nơi chịu trách nhiệm xác thực người dùng và nhận sự đồng ý của họ để cấp quyền truy cập vào các tài nguyên yêu cầu.
  3. Người dùng cấp ủy quyền: Máy chủ ủy quyền trình bày cho người dùng một màn hình đồng ý, giải thích dữ liệu mà ứng dụng bên thứ ba đang yêu cầu quyền truy cập. Người dùng có thể chọn cấp hoặc từ chối quyền truy cập.
  4. Mã ủy quyền được cấp phát: Nếu người dùng cấp quyền ủy quyền, máy chủ ủy quyền sẽ tạo ra mã ủy quyền và chuyển hướng người dùng trở lại URL callback của ứng dụng bên thứ ba, kèm theo mã ủy quyền.
  5. Yêu cầu mã thông báo truy cập: Ứng dụng bên thứ ba sử dụng mã ủy quyền để yêu cầu mã thông báo truy cập từ máy chủ ủy quyền. Mã thông báo truy cập là một thông tin xác thực cho phép ứng dụng truy cập vào tài nguyên của người dùng thay mặt cho người dùng.
  6. Mã thông báo truy cập được cấp phát: Nếu mã ủy quyền hợp lệ, máy chủ ủy quyền sẽ cấp cho ứng dụng bên thứ ba một mã thông báo truy cập. Mã thông báo truy cập thường là mã thông báo dài hạn mà có thể dùng để thực hiện các yêu cầu API thay mặt cho người dùng.
  7. Truy cập vào tài nguyên: Ứng dụng bên thứ ba hiện có thể sử dụng mã thông báo truy cập để truy cập vào tài nguyên của người dùng trên máy chủ tài nguyên. Máy chủ tài nguyên xác nhận mã thông báo truy cập và cấp quyền truy cập đến các tài nguyên yêu cầu nếu mã thông báo hợp lệ.
  8. Mã thông báo làm mới (tùy chọn): Trong một số trường hợp, máy chủ ủy quyền cũng có thể cấp một mã thông báo làm mới cùng với mã thông báo truy cập. Mã thông báo làm mới có thể được sử dụng để lấy một mã thông báo truy cập mới khi mã hiện tại hết hạn, mà không yêu cầu người dùng phải đi qua quy trình ủy quyền một lần nữa.

Luồng ủy quyền OAuth 2.0 cung cấp một cách an toàn và thân thiện cho người dùng để các ứng dụng bên thứ ba truy cập dữ liệu người dùng mà không trực tiếp xử lý thông tin xác thực của họ. Nó cho phép người dùng kiểm soát các ứng dụng nào có thể truy cập dữ liệu của họ và cung cấp một cách tiếp cận tiêu chuẩn cho việc tích hợp với các nền tảng khác nhau.

Các cân nhắc bảo mật cho OAuth 2.0

OAuth 2.0 cho phép các ứng dụng bên thứ ba truy cập tài nguyên của người dùng mà không cần thông tin xác thực, nhưng bảo mật là rất quan trọng. Thông tin nhạy cảm như mã thông báo truy cập, mã thông báo làm mới và bí mật khách hàng phải được lưu trữ và truyền tải một cách an toàn qua HTTPS. Các kiểm soát truy cập hợp lý nên hạn chế quyền truy cập. Thêm vào đó, việc hết hạn và thu hồi mã thông báo giúp ngăn chặn quyền truy cập không hợp lệ.

Xác thực mạnh mẽ thông qua các giao thức như OpenID Connect giảm thiểu rủi ro bằng cách yêu cầu các ứng dụng khách xác thực bằng thông tin xác thực. Máy chủ ủy quyền cũng phải được bảo mật thông qua các biện pháp như mã hóa an toàn, kiểm toán và giám sát. Trong khi tiện lợi cho các API, OAuth 2.0 mang đến những rủi ro cần giảm thiểu thông qua quản lý mã thông báo, xác thực, bảo mật máy chủ ủy quyền và các thực tiễn tốt nhất khác. Giải quyết những cân nhắc này nâng cao tính bảo mật tổng thể.