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 bằng 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 theo mô tả trong chủ đề. Người dùng cuối ở đây là người dùng ứng dụng đang gọi API.

Thời điểm 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. Bật quyền truy cập vào mã nhận dạng người dùng cuối chỉ khi bạn có một 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 để người dùng có thể biết họ đang dùng những ứng dụng bên thứ ba nào được cấp quyền và cung cấp tuỳ chọn thu hồi quyền truy cập đối với những ứng dụng đó.
  • Tính năng cho phép người dùng được uỷ quyền thu hồi tất cả mã 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

Hệ thống sẽ tự động thêm mã ứng dụng vào mã truy cập OAuth. Do đó, sau khi bạn bật mã thông báo quyền truy cập của một tổ chức như mô tả bên dưới, bạn có thể thu hồi mã 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, bạn phải có mã nhận dạng người dùng cuối trong mã truy cập. Quy trình dưới đây mô tả cách thêm mã nhận dạng người dùng cuối vào mã thông báo.

Theo mặc định, khi Edge tạo mã truy cập OAuth 2.0, mã thông báo đó sẽ có định dạng như vậy 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 mã nhận dạng duy nhất (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 của 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ã thông báo, như được 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 truy cập theo mã nhận dạng người dùng cuối.

Bạn chuyể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ể chuyể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ư được giải thích sau trong chủ đề này). Sau khi bạn định cấu hình Edge để bao gồm người dùng cuối Mã nhận dạng trong mã thông báo được đưa vào dưới dạng trường app_enduser, như minh hoạ dưới đây:

{
 "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 lệnh gọi API thực hiện các hoạt động truy xuất và thu hồi này, hãy xem sau đây là Smart Docs:

Cho phép truy cập vào mã thông báo OAuth 2.0 bằng cách mã nhận dạng người dùng và mã ứng dụng

Cách cho phép 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 Cạnh:

  • 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 quyền truy cập mã thông báo. Để biết thêm thông tin, hãy xem quy trình dưới đây.

  • Edge cho việc triển khai Đám mây riêng tư

    Trong Apigee Edge cho Cloud riêng (tại cơ sở hạ tầng riêng), bạn hoàn toàn chịu trách nhiệm về . Để biết thêm thông tin, hãy xem Vận hành 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 quyền truy cập mã thông báo. Để 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: Cho phép 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 Bộ phận hỗ trợ Apigee Edge để yêu cầu họ cập nhật tổ chức của bạn.

Bước 2: Cung cấp quyền đối với tài nguyên OAuth2 cho vai trò opsadmin và quản trị viên tổ chức

Bạn chỉ nên chỉ định vai trò quản trị viên tổ chứcopsadmin của bạn để thực hiện các lệnh gọi này (get) và thu hồi (put) đối với 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 Hướng dẫn đối với lệnh gọi API Resource (Tài nguyên) để xem vai trò nào có getput cho tài nguyên oauth2.

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

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

Do Nhóm hỗ trợ Apigee thực hiện: Trong nhiệm vụ này, các bản sao của OAuth 2.0 hiện có mã truy cập của những tổ chức bị ảnh hưởng sẽ được sao chép và lưu trữ trong các nút Cassandra của bạn. 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 lệnh gọi API để chạy dựa trên tất cả các mã truy cập OAuth 2.0, hiện có và mới được tạo.

Bước 4: Thêm thuộc tính oauth_max_search_limit vào máy chủ quản lý và thông báo của bạn đơn vị xử lý

Trong nhiệm vụ này, các tệp keymanagement.properties cho máy chủ quản lý của bạn và trình xử lý thông báo sẽ được cập nhật để bao gồm thuộc tính này: oauth_max_search_limit = 100. 100 là giá trị được đề xuất cho Apigee, nhưng bạn có thể thiết lập nếu thấy phù hợp.

Liên hệ với Bộ phận hỗ trợ Apigee Edge để yêu cầu họ thực hiện việc bổ sung này.

Bước 5: Thiết lập chính sách OAuth 2.0 để tạo mã truy cập 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 nhằm đưa mã nhận dạng người dùng cuối vào mã thông báo. Khi đưa mã nhận dạng người dùng cuối vào mã truy cập, bạn sẽ có thể 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 nhằm đưa mã nhận dạng người dùng cuối vào mã truy cập, bạn phải chỉ định đầ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 (có tên là GenerateAccessTokenClient) ở bên dưới sẽ tạo ra một OAuth Mã truy cập 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ể 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 là appuserID tiêu đề:

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, mã appuserID được chuyển dưới dạng tiêu đề yêu cầu. Bạn có thể chuyển thông tin trong yêu cầu theo nhiều cách. Cho ví dụ, bạn có thể:

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