Mã ủy quyền OAuth 2.0 là một phương pháp xác thực phổ biến được nhiều dịch vụ, bao gồm cả GitHub, sử dụng để cho phép các ứng dụng bên thứ ba truy cập dữ liệu người dùng mà không cần chia sẻ mật khẩu. Triển khai và gỡ lỗi nó trong Apidog có thể là một kỹ năng quý giá.
OAuth 2.0
OAuth 2.0 là một giao thức ủy quyền được sử dụng rộng rãi cho phép truy cập bên thứ ba đến các tài nguyên được bảo vệ mà không cần yêu cầu thông tin xác thực của người dùng. Nó liên quan đến bốn vai trò chính, đó là Chủ sở hữu Tài nguyên, Khách hàng, Máy chủ Ủy quyền và Máy chủ Tài nguyên.

Các Luồng Ủy quyền Phổ biến
Giao thức OAuth 2.0 thực hiện ủy quyền thông qua nhiều luồng ủy quyền khác nhau. Các luồng ủy quyền phổ biến bao gồm:
- Mã Ủy quyền: Khách hàng chuyển hướng người dùng đến máy chủ ủy quyền. Sau khi người dùng đăng nhập và cấp quyền, máy chủ ủy quyền trả về một mã ủy quyền cho khách hàng. Khách hàng sau đó trao đổi mã ủy quyền cùng với thông tin xác thực của mình để lấy một mã truy cập.
- Mã Ủy quyền với PKCE (Chìa khóa Chứng minh cho Trao đổi Mã): Tương tự như luồng mã ủy quyền chuẩn, nhưng khách hàng tăng cường bảo mật bằng cách sử dụng PKCE (Chìa khóa Chứng minh cho Trao đổi Mã).
- Cấp Quyền Thông tin Đăng Nhập của Chủ Sở Hữu Tài Nguyên: Chủ sở hữu tài nguyên trực tiếp cung cấp tên người dùng và mật khẩu của họ cho khách hàng. Khách hàng sau đó sử dụng những thông tin xác thực này để yêu cầu mã truy cập từ máy chủ ủy quyền.
- Cấp Quyền Thông tin Đăng Nhập của Khách Hàng: Khách hàng trực tiếp yêu cầu mã truy cập từ máy chủ ủy quyền bằng cách sử dụng thông tin xác thực của chính mình. Luồng này phù hợp cho các trường hợp khi khách hàng tự cần truy cập tài nguyên.
- Cấp Quyền Ngầm: Được sử dụng để nhận mã truy cập trực tiếp từ khách hàng trong một ứng dụng dựa trên trình duyệt. Luồng này thường được sử dụng cho các ứng dụng frontend web.
Cách Thiết lập Github OAuth 2.0 (ID Khách Hàng và Mật Khẩu Khách Hàng)
Bước 1: Tạo ứng dụng và lấy ID khách hàng và mật khẩu khách hàng
Để lấy ID khách hàng và khóa khách hàng, trước tiên chúng ta cần tạo một ứng dụng. Nhấp vào liên kết này để tạo một cái trong Github: https://github.com/settings/applications/new, và sau đó điền "URL Trang Chủ" của bạn tại đây. Tên miền, nếu là gỡ lỗi cục bộ, bạn có thể điền dịch vụ cục bộ của bạn, chẳng hạn như http://127.0.0.1:8000.
Điền địa chỉ callback của bạn vào "URL phản hồi ủy quyền", có thể là tên miền của bạn hoặc địa chỉ callback cục bộ của bạn, chẳng hạn như http://127.0.0.1:8000/callback.
Sau khi điền các cấu hình liên quan, nhấp vào "Đăng ký ứng dụng" để tạo nó.

Sau khi ứng dụng được tạo, ID khách hàng và mật khẩu khách hàng sẽ được tạo ra. Khóa khách hàng cần phải được tạo riêng biệt. Nhấp vào "Tạo một mật khẩu khách hàng mới" để tạo một khóa.

Bước 2: Lấy mã truy cập
Khi bước đầu tiên ở trên đã sẵn sàng, chúng ta có thể xin một mã truy cập (Token). Chúng tôi sẽ minh họa bước này thông qua Apidog. Apidog là một công cụ gỡ lỗi và quản lý API rất xuất sắc.

Bạn có thể nhận mã truy cập Token trực tiếp trong Apidog. Nếu bạn chưa cài đặt Apidog, hãy tải về một cái ngay bây giờ!
- Tạo một dự án HTTP mới trong Apidog và mở nó, sau đó tạo một yêu cầu mới trong dự án và chọn [Chỉnh sửa Tài liệu -> Xác thực -> OAuth 2.0 -> tùy chọn.

2. Cấu hình ID khách hàng, khóa khách hàng và địa chỉ chuyển hướng
Chế độ ủy quyền mặc định được chọn trên trang OAuth 2.0 trong Apidog là Mã Ủy quyền (chế độ mã ủy quyền).
Bởi vì Github OAuth 2.0 cũng sử dụng Mã Ủy quyền (chế độ mã ủy quyền), bạn không cần phải chuyển đổi ở đây.

Sau đó tìm ID khách hàng, Mật khẩu Khách hàng và URL phản hồi ở cuối trang. ID khách hàng (Client ID), mật khẩu khách hàng (Client Secret) và địa chỉ phản hồi đã cấu hình (Callback URL) sẽ được lấy từ dịch vụ OAuth 2.0 của Github.
Chỉ cần điền vào. Các tham số cụ thể là các cấu hình trong "Bước 1" ở trên.

3. Cấu hình địa chỉ yêu cầu của mã ủy quyền
Theo tài liệu chính thức của Github, khi thực hiện xác thực OAuth 2.0, địa chỉ yêu cầu (URL ủy quyền) của mã ủy quyền là:
https://github.com/login/oauth/authorize
Chỉ cần điền địa chỉ yêu cầu này vào Auth URL. Chúng ta có thể hiểu địa chỉ này như trang ủy quyền đăng nhập.
Trang này sẽ được mở khi trạng thái đăng nhập được xác minh lần đầu tiên (nó là một cửa sổ trên khách hàng), và sau đó bạn sẽ được yêu cầu điền vào địa chỉ yêu cầu. tên người dùng và mật khẩu.

Thông thường, khi tự tay xây dựng trang ủy quyền đăng nhập, một số tham số cần phải được mang theo sau địa chỉ ủy quyền.
Tuy nhiên, trong Apidog, các tham số sau URL thường không cần phải mang theo, chỉ cần phần đường dẫn phía trước dấu hỏi? là đủ, vì các tham số khác đã được cấu hình riêng trong các tùy chọn khác.
Tất nhiên, nếu bạn muốn mang theo một số tham số Query, bạn cũng có thể thêm chúng. Nhấp vào biểu tượng phía sau ô nhập để thêm:

Chúng ta cũng có thể mở rộng tùy chọn "Thêm" và điền vào các giá trị tham số cần điền vào các tùy chọn tương ứng. Ví dụ, trong "Phạm vi", bạn có thể điền các quyền yêu cầu, chẳng hạn như read:user, user:email, v.v.
Bạn có thể có nhiều quyền hơn cho các quyền khác Bạn có thể truy cập mô-đun quyền của tài liệu trợ giúp Github để xem. Điền vào trạng thái trong tùy chọn "Trạng thái". Trạng thái được sử dụng để ngăn chặn giả mạo yêu cầu giữa các trang.

4. Cấu hình địa chỉ yêu cầu của mã truy cập
Theo tài liệu chính thức của Github, để xin mã truy cập, URL yêu cầu là:
https://github.com/login/oauth/access_token
Chỉ cần điền địa chỉ ở trên vào trường đầu vào URL Mã Truy cập của trang OAuth 2.0 của Apidog.

5. Lấy mã truy cập cho dịch vụ Github OAuth 2.0
Sau khi các mục cấu hình ở trên được thiết lập, bạn có thể nhấp vào nút "Lấy Mã" để nhận mã truy cập.
Sau khi nhấp, nếu đây là lần đầu tiên bạn đăng nhập, một cửa sổ sẽ bật lên để bạn ủy quyền. Chỉ cần điền tên người dùng và mật khẩu của tài khoản Github của bạn.

Sau khi điền tên người dùng và mật khẩu, bạn sẽ được yêu cầu xác nhận ủy quyền hoặc thực hiện xác minh hai bước. Sau khi xác minh, nhấp vào xác nhận.
Sau khi hoàn tất ủy quyền, mã truy cập sẽ được tự động lấy và hiển thị trên trang. Đồng thời, thông tin khác được trả về bởi Github cũng sẽ được phân tích, như hình dưới đây. "Hết hạn" được hiển thị ở đây vì Github không trả về thuộc tính expires_in cho chúng tôi, vì vậy chúng tôi không thể đưa ra phán đoán. Tuy nhiên, mã Token này vẫn có thể sử dụng. Hãy cùng thực hiện một yêu cầu bên dưới.

Bước 3: Truy cập tài nguyên công khai dựa trên Token
Sau khi bạn có mã truy cập (Token), bạn có thể sử dụng mã truy cập này để gọi đến các tài nguyên công khai của Github. Bạn có thể xem các tài nguyên công khai cụ thể trong API của Github.
Ví dụ, API sau đây lấy thông tin người dùng. Nếu giao diện của bạn không trả về, bạn cần kiểm tra xem bạn có quyền hay không. Như đã đề cập trong Mục 3 của "Bước 2", chỉ cần cấu hình trong Phạm vi.

Khi gửi yêu cầu, Apidog sẽ tự động đính kèm Token vào phần Xác thực của header yêu cầu, thêm vào Bearer và gửi đi. Nếu bạn muốn mang theo Token trong URL, bạn cũng có thể chỉnh sửa "Thêm Vị trí" của Token trong các mục cấu hình của trang và chọn "Tham số Query".

Tóm tắt
OAuth 2.0 là một khuôn khổ ủy quyền cho phép các ứng dụng bên thứ ba nhận mã truy cập mà không yêu cầu người dùng cung cấp tên người dùng và mật khẩu. Quy trình ủy quyền mà GitHub sử dụng là "quy trình ủy quyền mã ủy quyền", và quy trình ủy quyền của nó có thể được gỡ lỗi và cấu hình trong Apidog.