自訂權杖與授權碼

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

關於權杖中繼資料

Apigee Edge 會產生 OAuth 存取權杖、更新權杖和授權碼,並 並散佈至通過驗證的應用程式Edge 會在產生時儲存這些符記和代碼。 之後,當 Edge 收到來自這些權杖或代碼的傳入 API 要求時,Edge 就會使用 授權要求。

Edge 產生這些 OAuth 構件時,也會將中繼資料附加至權杖或程式碼。適用對象 例如,存取符記與定義到期時間的名稱/值組合相關聯, 以及相關資訊

Edge 存取權杖的 JSON 表示法如下所示:

{
  "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"
}

新增自訂屬性至 OAuth 權杖

將自訂中繼資料附加至存取權杖有時相當實用。舉例來說 為使用者新增使用者名稱、群組成員資格或角色、客戶 ID、工作階段 ID 提供給權杖使用在 Apigee Edge 中,這些資料稱為「自訂」 屬性。」因此,如果在 API 要求範圍內驗證權杖, 系統可透過內容變數向 API Proxy 提供資料。API Proxy 可以 根據服務附加的自訂資料,進行精細的授權或轉送決策 產生下一個符記

如要將任意資料附加至權杖,請在<Attributes> OAuthV2 政策。你可以 請指定自訂屬性的名稱和其值。舉例來說 政策設定,用於產生權杖並附加名為「consumer_list」的自訂屬性 新增至權杖:

<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>

您可以指定多個自訂屬性,並以隱含方式附加至 授權碼 (<Operation>GenerateAuthorizationCode</Operation>) 或 產生憑證 (<Operation>GenerateAccessToken</Operation>) 時 。

如果 display 設為 true (預設值),自訂屬性就會是 而回應中傳回的內容,而應用程式中可供應用程式查看,或傳送給使用者。 當 display 設為 false 時,自訂屬性會儲存在資料中 但不會在回應訊息中傳回。不論是哪一種情況,都可以在系統 權杖通過驗證後,就會套用至 API Proxy 中的政策。

進一步瞭解 display 選項 顯示或隱藏回應中的自訂屬性

在執行階段取得自訂屬性

如果有呼叫 OAuthV2/VerifyAccessToken, Apigee Edge 會在權杖存放區中查詢權杖,藉此驗證權杖。接著,Apigee Edge 會填入 包含權杖相關資訊的一組結構定義變數。包括:

  • organization_name
  • developer.id
  • developer.app.name
  • client_id
  • grant_type
  • token_type
  • access_token
  • issued_at
  • 到期_in //--以秒為單位
  • 狀態
  • 範圍
  • apiproduct.name*

如果符記上有任何自訂屬性,這些自訂屬性會在 名為 accesstoken.{custom_attribute} 的結構定義變數。例如: 假設權杖是由上述政策核發。驗證這類權杖後 是名為 accesstoken.tenant_list 的額外結構定義變數,其中包含 值。

這樣一來,政策或條件就能參照這些變數,並根據 儲存這些值

設定及更新自訂屬性: 執行階段

在某些情況下,您可能會希望 API Proxy 更新 存取權杖。為瞭解決這個問題 Apigee 提供用於取得和設定權杖屬性的政策。若需更多資訊,請參閲 取得 OAuth V2 資訊 政策設定 OAuth V2 資訊政策

在每個政策中,AccessToken 元素都應參照符合以下條件的變數: 包含存取權杖

您也可以使用 Edge API 來更新附加至權杖的自訂屬性。查看 API 更新文件 OAuth 2.0 存取權杖方法。