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.
Truy cập vào tài liệu Apigee X.
thông tin

Phần này mô tả cách cho phép 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 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 ứ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ó 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, nơi 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 được liên kết với một Ứng dụng 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ả bên dưới, 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 dưới đây mô tả cách thêm mã nhận dạng người dùng cuối vào một 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 sẽ có định dạng như minh hoạ 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 cho phép 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 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ư 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 sau trong chủ đề này). Sau khi bạn định cấu hình Edge để thêm 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 thêm 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 để truy xuất và thu hồi này, hãy xem Tài liệu thông minh sau:

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ã nhận dạng ứng dụng phụ thuộc vào cách bạn triển khai Edge:

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

    Việc triển khai Edge dựa 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 tư

    Trong Apigee Edge cho Private Cloud (tại chỗ), 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 hybrid

    Theo mặc định, 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. 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.

Cho phép truy cập vào đá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 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 đối với tài nguyên oauth2 cho các vai trò opsadmin và orgadmin

Chỉ 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 đối với tài nguyên oauth2 dựa trên mã nhận dạng người dùng cuối hoặc mã nhận dạng ứng dụng.

Bạn có thể sử dụng lệnh gọi API Get Permission for a Resource (Lấy quyền cho một tài nguyên) để xem những 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á bất kỳ quyền nào, hãy liên hệ với Nhóm hỗ trợ Apigee Edge để họ thực hiện việc 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 tác 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 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. Thao tác này sẽ cho phép các lệnh gọi API truy xuất và thu hồi chạy trên tất cả mã truy cập OAuth 2.0 của bạn, cả mã hiện có và mã mới được tạo.

Bước 4: Định cấu hình chính sách OAuth 2.0 để tạo mã truy cập bao gồm cả 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 thêm 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. 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ã truy cập OAuth 2.0. Lưu ý rằng chúng tôi đã thêm thẻ <AppEndUser> được đánh dấu đậ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, 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 đề của yêu cầu. Bạn có thể truyền thông tin trong yêu cầu theo nhiều cách. Ví dụ: bạn có thể làm như sau:

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