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 cần có quy trình thiết lập đặc biệt theo mô tả trong chủ đề này. Người dùng cuối ở đây có nghĩa 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. Chỉ bật tính năng 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 chính xác. Ví dụ:

  • Một tính năng dành cho trang web hoặc ứng dụng của bạn để người dùng có thể xem những ứng dụng bên thứ ba mà họ đã uỷ quyền, đồng thời 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ã truy cập đã liên kết với một Ứng dụng cụ thể của nhà phát triển.

Giới thiệu về mã thông báo 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 vào 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ã truy cập theo mã ứng dụ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, trong mã truy cập đó phải có mã người dùng cuối. 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 hiện có.

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

{
 "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 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. Để cho phép 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, 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ư mô tả trong quy trình dưới đây. 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ì không cần cấp 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 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ư sẽ giải thích ở phần sau trong 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ã này sẽ đượ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 các 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 các Tài liệu thông minh sau đây:

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ã nhận dạng ứng dụng

Cách bạn 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 Edge:

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

    Khi triển khai Edge trên đám mây, Apigee sẽ xử lý hầu hết cấu hì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, hãy xem quy trình bên dưới.

  • Edge để triển khai đám mây riêng tư

    Trong Apigee Edge dành cho đám mây riêng tư (tại cơ sở hạ tầng riêng), 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 Hoạt động 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, hãy xem Bước 5 của quy trình bên dưới.

Cho phép 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.

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

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

Chỉ những vai trò quản trị viên tổ chứcquản trị viên hoạt động của bạn mới được cấp quyền để thực hiện các lệnh gọi này (get) và thu hồi (put) tới 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 một tài nguyên để xem vai trò nào có quyền getput đối với tài nguyên oauth2.

Nếu bạn cần thêm hoặc xoá quyền nào đó, hãy liên hệ với Apigee Edge Support để yêu cầu 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

Do nhóm hỗ trợ Apigee thực hiện: Trong nhiệm vụ này, bản sao của mã truy cập OAuth 2.0 hiện có trong các 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 từng nhóm Apigee Edge. Việc này sẽ cho phép truy xuất và thu hồi 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 đượ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à trình xử lý thư

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

Hãy liên hệ với Nhóm hỗ trợ Apigee để nhờ họ thực hiện việc bổ sung này.

Bước 5: Định cấu hình 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. Bằng cách đư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 biến đầu vào chứa mã nhận dạng người dùng cuối. Dùng thẻ <AppEndUser> để chỉ định biến.

Chính sách OAuth 2.0 dưới đây (có tên là GenerateAccessTokenClient) sẽ tạo mã truy cập OAuth 2.0. Lưu ý rằng 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 đây để tạo mã truy cập OAuth 2.0, chuyể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, hệ thống sẽ chuyển appuserID dưới dạng tiêu đề của yêu cầu. Bạn có thể chuyển thông tin dưới dạng một phần của yêu cầu theo nhiều cách. Ví dụ: thay vào đó, bạn có thể:

  • Sử dụng biến thông 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