Tuỳ chỉnh mã thông báo và mã uỷ quyền

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

Giới thiệu về siêu dữ liệu mã thông báo

Apigee Edge tạo mã truy cập OAuth, mã làm mới và mã uỷ quyền, đồng thời phân phối đến các ứng dụng đã xác thực. Tại thời điểm tạo, Edge sẽ lưu trữ các mã thông báo và mã đó. Sau đó, khi Edge nhận được các yêu cầu API đến chứa những mã thông báo hoặc mã này, Edge sẽ sử dụng thông tin đã lưu trữ để cấp quyền cho các yêu cầu đó.

Khi tạo các cấu phần phần mềm OAuth này, Edge cũng sẽ đính kèm siêu dữ liệu vào mã thông báo hoặc mã. Ví dụ: mã truy cập được liên kết với các cặp tên/giá trị xác định thời gian hết hạn, ứng dụng và nhà phát triển được liên kết cũng như các thông tin khác.

Mã biểu thị JSON của mã truy cập Edge sẽ có dạng như sau:

{
  "issued_at" : "1372170159093",
  "application_name" : "ccd1803b-b557-4520-bd62-ddd3abf8e501",
  "scope" : "READ",
  "status" : "approved",
  "api_product_list" : "[Product1,Product2]",
  "api_product_list_json" : ["Product1", "Product2"],
  "expires_in" : "3599", //--in seconds
  "developer.email" : "joe@weathersample.com",
  "organization_id" : "0",
  "refresh_token" : "82XMXgDyHTpFyXOaApj8C2AGIPnN2IZe",
  "client_id" : "deAVedE0W9Z9U35PAMaAJYphBJCGdrND",
  "access_token" : "shTUmeI1geSKin0TODcGLXBNe9vp",
  "organization_name" : "apifactory",
  "refresh_count" : "0"
}

Thêm thuộc tính tuỳ chỉnh vào mã thông báo OAuth

Đôi khi, bạn nên đính kèm siêu dữ liệu tuỳ chỉnh vào mã truy cập. Ví dụ: bạn có thể thêm tên người dùng, thành viên nhóm hoặc vai trò của người dùng, mã khách hàng, giá trị nhận dạng phiên hoặc các thông tin tuỳ ý khác vào một mã thông báo. Trong Apigee Edge, các dữ liệu này được gọi là "thuộc tính tuỳ chỉnh". Sau đó, khi mã thông báo được xác minh trong phạm vi của một yêu cầu API, dữ liệu đó sẽ được cung cấp cho proxy API thông qua các biến ngữ cảnh. Proxy API có thể đưa ra quyết định định tuyến hoặc uỷ quyền chi tiết dựa trên dữ liệu tuỳ chỉnh đính kèm vào mã thông báo.

Để đính kèm dữ liệu tuỳ ý vào mã thông báo, hãy sử dụng phần tử <Attributes> trong chính sách OAuthV2. Bạn có thể chỉ định tên của thuộc tính tuỳ chỉnh và giá trị thuộc tính này. Ví dụ: sau đây là một cấu hình chính sách tạo mã thông báo và đính kèm thuộc tính tuỳ chỉnh "tenant_list" vào mã thông báo:

<OAuthV2 name="GenerateAccessToken">
  <Operation>GenerateAccessToken</Operation>
  <ExpiresIn>600000</ExpiresIn>
  <GenerateResponse />
  <SupportedGrantTypes>
    <GrantType>client_credentials</GrantType>
  </SupportedGrantTypes>
  <GrantType>request.queryparam.grant_type</GrantType>
  <Attributes> 
    <Attribute name="tenant_list" ref="tenant_list_retrieved_from_external_service" display="false"/>
  </Attributes>
</OAuthV2>

Bạn có thể chỉ định nhiều thuộc tính tuỳ chỉnh và có thể ngầm đính kèm các thuộc tính đó vào mã uỷ quyền (<Operation>GenerateAuthorizationCode</Operation>) hoặc mã thông báo (<Operation>GenerateAccessToken</Operation>) tại thời điểm tạo.

Khi bạn đặt display thành true (mặc định), các thuộc tính tuỳ chỉnh sẽ được trả về trong phản hồi. Tại đây, ứng dụng có thể xem các thuộc tính tuỳ chỉnh đó hoặc chuyển cho người dùng cuối. Khi bạn đặt display thành false, các thuộc tính tuỳ chỉnh sẽ được lưu trữ trong kho dữ liệu nhưng không được trả về trong thông báo phản hồi. Trong cả hai trường hợp, dữ liệu tuỳ chỉnh sẽ có sẵn cho các chính sách trong Proxy API sau khi mã thông báo được xác minh.

Để biết thêm thông tin về tuỳ chọn display, hãy Hiện hoặc ẩn thuộc tính tuỳ chỉnh trong phản hồi.

Lấy thuộc tính tuỳ chỉnh trong thời gian chạy

Khi có lệnh gọi đến OAuthV2/VerifyAccessToken, Apigee Edge sẽ xác minh mã thông báo bằng cách tìm kiếm mã đó trong cửa hàng mã thông báo. Sau đó, Apigee Edge sẽ điền một tập hợp biến ngữ cảnh chứa thông tin về mã thông báo. Những quốc gia/khu vực này bao gồm:

  • organization_name
  • developer.id
  • developer.app.name
  • client_id
  • grant_type
  • token_type
  • access_token
  • issued_at
  • hết hạn_sau //--trong giây
  • trạng thái
  • xác định phạm vi của thứ nguyên.
  • apiproduct.name*

Nếu có bất kỳ thuộc tính tuỳ chỉnh nào trên mã thông báo, thì các thuộc tính tuỳ chỉnh đó sẽ được cung cấp trong một biến ngữ cảnh có tên là accesstoken.{custom_attribute}. Ví dụ: giả sử một mã thông báo được phát hành từ chính sách nêu trên. Sau khi xác minh một mã thông báo như vậy, sẽ có thêm một biến ngữ cảnh có tên là accesstoken.tenant_list. Biến này chứa giá trị được lưu trữ tại thời điểm tạo mã thông báo.

Sau đó, chính sách hoặc điều kiện có thể tham chiếu đến các biến này và sửa đổi hành vi dựa trên các giá trị được lưu trữ trong đó.

Đặt và cập nhật các thuộc tính tuỳ chỉnh trong Thời gian chạy

Trong một số trường hợp, bạn có thể muốn Proxy API cập nhật siêu dữ liệu liên kết với một mã truy cập trong thời gian chạy khi một lệnh gọi API đang được xử lý trên Apigee Edge. Để giúp giải quyết vấn đề này, Apigee cung cấp các chính sách lấy và thiết lập thuộc tính mã thông báo. Để biết thêm thông tin, hãy xem phần Tải chính sách thông tin về OAuth V2Thiết lập chính sách thông tin về OAuth V2.

Trong mỗi chính sách này, phần tử AccessToken phải tham chiếu đến một biến chứa mã truy cập.

Bạn cũng có thể sử dụng Edge API để cập nhật các thuộc tính tuỳ chỉnh đính kèm với mã thông báo. Xem tài liệu API cho phương thức Cập nhật mã truy cập OAuth 2.0.