Cho phép truy xuất và thu hồi mã truy cập OAuth 2.0 theo mã người dùng cuối, mã ứng dụng hoặc cả hai

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về Apigee X.
thông tin

Phần này mô tả cách bật tính năng truy xuất và thu hồi mã truy cập OAuth 2.0 theo mã nhận dạng người dùng cuối, mã ứng dụng hoặc cả hai. Tính năng mã nhận dạng người dùng cuối yêu cầu thiết lập đặc biệt như mô tả trong chủ đề này. Người dùng cuối là người dùng của ứng dụng đang gọi API.

Trường hợp nên bật quyền truy cập vào mã nhận dạng người dùng cuối

Đôi khi, bạn nên lưu trữ mã nhận dạng người dùng trong mã truy cập. Chỉ bật tính năng quyền truy cập vào mã nhận dạng người dùng cuối nếu bạn có trường hợp sử dụng phù hợp. Ví dụ:

  • Một tính năng cho trang web hoặc ứng dụng của bạn, trong đó người dùng có thể xem những ứng dụng bên thứ ba mà họ đã uỷ quyền và cung cấp lựa chọn thu hồi quyền truy cập vào những ứng dụng đó.
  • Một tính năng cho phép người dùng được uỷ quyền thu hồi tất cả mã thông báo truy cập liên kết với một Ứng dụng dành cho nhà phát triển cụ thể.

Giới thiệu về mã truy cập OAuth

Mã ứng dụng sẽ tự động được thêm vào mã truy cập OAuth. Do đó, sau khi bật quyền truy cập bằng mã thông báo cho một tổ chức như mô tả dưới đây, bạn có thể thu hồi mã thông báo truy cập theo mã ứng dụng.

Để truy xuất và thu hồi mã truy cập OAuth 2.0 theo mã nhận dạng người dùng cuối, mã nhận dạng người dùng cuối phải có trong mã truy cập. Quy trình bên dưới mô tả cách thêm mã nhận dạng người dùng cuối vào mã thông báo hiện có.

Theo mặc định, khi Edge tạo mã truy cập OAuth 2.0, mã này sẽ có định dạng như bên dưới:

{
 "issued_at" : "1421847736581",
 "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
 "scope" : "READ",
 "status" : "approved",
 "api_product_list" : "[PremiumWeatherAPI]",
 "expires_in" : "3599", //--in seconds
 "developer.email" : "tesla@weathersample.com",
 "organization_id" : "0",
 "token_type" : "BearerToken",
 "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
 "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
 "organization_name" : "myorg",
 "refresh_token_expires_in" : "0", //--in seconds
 "refresh_count" : "0"
}

Xin lưu ý những điều sau:

  • Trường application_name chứa UUID của ứng dụng được liên kết với mã thông báo. Nếu bạn bật tính năng truy xuất và thu hồi mã truy cập OAuth 2.0 theo mã ứng dụng, thì đây là mã ứng dụng mà bạn sử dụng.
  • Trường access_token chứa giá trị mã truy cập OAuth 2.0.

Không có trường nào cho mã nhận dạng người dùng cuối trong mã truy cập OAuth mặc định. Để bật tính năng truy xuất và thu hồi mã truy cập OAuth 2.0 theo mã nhận dạng người dùng cuối, bạn phải định cấu hình chính sách OAuth 2.0 để đưa mã nhận dạng người dùng vào mã, như mô tả trong quy trình bên dưới. Xin lưu ý rằng nếu bạn chỉ muốn truy xuất và thu hồi mã truy cập OAuth 2.0 theo mã ứng dụng, thì bạn không cần bật quyền truy cập theo mã nhận dạng người dùng cuối.

Bạn truyền mã nhận dạng người dùng cuối vào điểm cuối tạo mã thông báo. Bạn có thể truyền mã nhận dạng của người dùng cuối dưới dạng tham số truy vấn, tham số biểu mẫu hoặc trong tiêu đề (như giải thích ở phần sau của chủ đề này). Sau khi bạn định cấu hình Edge để đưa mã nhận dạng người dùng cuối vào mã thông báo, mã nhận dạng này sẽ được đưa vào dưới dạng trường app_enduser, như minh hoạ bên dưới:

{
 "issued_at" : "1421847736581",
 "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
 "scope" : "READ",
 "app_enduser" : "6ZG094fgnjNf02EK",
 "status" : "approved",
 "api_product_list" : "[PremiumWeatherAPI]",
 "expires_in" : "3599", //--in seconds
 "developer.email" : "tesla@weathersample.com",
 "organization_id" : "0",
 "token_type" : "BearerToken",
 "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
 "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
 "organization_name" : "myorg",
 "refresh_token_expires_in" : "0", //--in seconds
 "refresh_count" : "0"
}

Để tìm hiểu cách thực hiện các lệnh gọi API thực hiện các lệnh truy xuất và thu hồi này, hãy xem các tài liệu Smart sau:

Bật quyền truy cập vào mã thông báo OAuth 2.0 theo mã nhận dạng người dùng và mã ứng dụng

Cách bạn bật quyền truy cập vào mã thông báo OAuth 2.0 theo mã nhận dạng người dùng và mã ứng dụng phụ thuộc vào cách bạn triển khai Edge:

  • Triển khai trên đám mây

    Việc triển khai Edge trên đám mây có nghĩa là hầu hết cấu hình đều do Apigee xử lý. Bạn chỉ chịu trách nhiệm định cấu hình chính sách OAuth 2.0 để thêm mã nhận dạng người dùng vào mã truy cập. Để biết thêm thông tin, hãy xem quy trình bên dưới.

  • Triển khai Edge cho đám mây riêng

    Trong Apigee Edge cho Private Cloud (trên máy), bạn hoàn toàn chịu trách nhiệm về cấu hình. Để biết thêm thông tin, hãy xem phần Thao tác và cấu hình.

  • Apigee kết hợp

    Quyền truy cập vào mã thông báo OAuth 2.0 theo mã nhận dạng người dùng được bật theo mặc định. Bạn chỉ chịu trách nhiệm định cấu hình chính sách OAuth 2.0 để thêm mã nhận dạng người dùng vào mã truy cập. Để biết thêm thông tin, hãy xem Bước 5 của quy trình bên dưới.

Bật quyền truy cập trên đám mây

Bước 1: Bật một tổ chức để hỗ trợ tính năng này

Bạn phải bật tính năng này cho từng tổ chức mà bạn muốn hỗ trợ tính năng này.

Hãy liên hệ với Nhóm hỗ trợ Apigee Edge để họ cập nhật tổ chức của bạn.

Bước 2: Cung cấp Quyền tài nguyên oauth2 cho vai trò opsadmin và orgadmin

Chỉ các vai trò orgadminopsadmin mới được cấp quyền thực hiện các lệnh gọi truy xuất (get) và thu hồi (put) này đến tài nguyên oauth2 dựa trên mã nhận dạng người dùng cuối hoặc mã ứng dụng.

Bạn có thể sử dụng lệnh gọi API Lấy quyền cho tài nguyên để xem vai trò nào có quyền getput cho tài nguyên oauth2.

Nếu bạn cần thêm hoặc xoá bất kỳ quyền nào, hãy liên hệ với Nhóm hỗ trợ Apigee Edge để họ cập nhật.

Bước 3: Sao chép mã thông báo truy cập OAuth 2.0 hiện có vào các nút Cassandra

Thực hiện bởi Nhóm hỗ trợ Apigee: Trong nhiệm vụ này, các bản sao của mã truy cập OAuth 2.0 hiện có trong các tổ chức chịu ảnh hưởng sẽ được sao chép và lưu trữ trong các nút Cassandra. Quy trình này sẽ được thực hiện trên các nút Cassandra cho mỗi nhóm Apigee Edge. Điều này sẽ cho phép truy xuất và thu hồi các lệnh gọi API để chạy trên tất cả mã truy cập OAuth 2.0, hiện có và mới tạo.

Bước 4: Định cấu hình chính sách OAuth 2.0 để tạo mã truy cập có chứa mã nhận dạng người dùng cuối

Định cấu hình chính sách OAuth 2.0 dùng để tạo mã truy cập để đưa mã nhận dạng người dùng cuối vào mã thông báo. Bằng cách đưa mã nhận dạng người dùng cuối vào mã thông báo truy cập, bạn có thể thực hiện các thao tác truy xuất và thu hồi theo mã nhận dạng người dùng cuối.

Để định cấu hình chính sách bao gồm mã nhận dạng người dùng cuối trong mã truy cập, bạn phải chỉ định biến đầu vào chứa mã nhận dạng người dùng cuối. Sử dụng thẻ <AppEndUser> để chỉ định biến.

Chính sách OAuth 2.0 bên dưới, có tên là GenerateAccessTokenClient, sẽ tạo một mã truy cập OAuth 2.0. Lưu ý việc thêm thẻ <AppEndUser> được in đậm:

<OAuthV2 async="false" continueOnError="false" enabled="true" name="GenerateAccessTokenClient">
  <DisplayName>OAuth 2.0.0 1</DisplayName>
  <ExternalAuthorization>false</ExternalAuthorization>
  <Operation>GenerateAccessToken</Operation>
  <SupportedGrantTypes>
    <GrantType>client_credentials</GrantType>
  </SupportedGrantTypes>
  <GenerateResponse enabled="true"/>
  <GrantType>request.queryparam.grant_type</GrantType>
  <AppEndUser>request.header.appuserID</AppEndUser>
  <ExpiresIn>960000</ExpiresIn>
</OAuthV2>

Sau đó, bạn có thể sử dụng lệnh cURL sau để tạo mã truy cập OAuth 2.0, truyền mã nhận dạng người dùng dưới dạng tiêu đề appuserID:

curl -H "appuserID:6ZG094fgnjNf02EK" /
  https://myorg-test.apigee.net/oauth/client_credential/accesstoken?grant_type=client_credentials /
  -X POST /
  -d 'client_id=k3nJyFJIA3p62TKIkLO6OJNi87GYXFmP&client_secret=gk58jK5lIp943AY4'

Trong ví dụ này, appuserID được truyền dưới dạng tiêu đề yêu cầu. Bạn có thể truyền thông tin trong một yêu cầu theo nhiều cách. Ví dụ: bạn có thể:

  • Sử dụng biến tham số biểu mẫu: request.formparam.appuserID
  • Sử dụng biến luồng cung cấp mã nhận dạng người dùng cuối