透過使用者 ID 和/或應用程式 ID 啟用擷取及撤銷 OAuth 2.0 存取權杖的功能

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

本節說明如何透過 User-ID 和/或應用程式 ID。使用者 ID 功能需要進行特殊設定,如下所述 主題。所謂的使用者,指的是呼叫 API 的應用程式使用者。

啟用 User-ID 存取權的時機

有時候,建議您將使用者 ID 儲存在存取權杖中。啟用 User-ID 存取權 只有在有適當用途時才會啟用例如:

  • 這個網站或應用程式功能,可讓使用者查看自己的第三方應用程式 ,並提供撤銷應用程式存取權的選項。
  • 這項功能可讓授權使用者撤銷與 。

關於 OAuth 存取權杖

系統會自動將應用程式 ID 新增至 OAuth 存取權杖。因此,啟用權杖後 如下所述,您可以依應用程式 ID 撤銷存取權杖。

如要依使用者 ID 擷取及撤銷 OAuth 2.0 存取權杖,必須擁有使用者 ID 傳回的結果以下程序說明如何將 User-ID 新增至現有 產生下一個符記

根據預設,Edge 產生 OAuth 2.0 存取權杖時,權杖會採用「 如下:

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

注意事項:

  • application_name 欄位 包含與權杖相關聯的應用程式的 UUID。如果啟用擷取和撤銷功能 ,也就是您使用的應用程式 ID。
  • access_token 欄位 包含 OAuth 2.0 存取權杖值。

預設的 OAuth 存取權杖沒有使用者 ID 的欄位。如要啟用擷取和 依據使用者 ID 撤銷 OAuth 2.0 存取權杖時,您必須設定 OAuth 2.0 政策 ,將 User-ID 加入權杖。請注意,如果您在 以應用程式 ID 擷取及撤銷 OAuth 2.0 存取權杖,則不需要啟用 透過使用者 ID 劃分存取權

您將使用者 ID 傳入權杖建立端點。您可以將使用者 ID 做為查詢參數、form 參數或 標頭中 (詳見本主題後續說明)設定 Edge 以納入使用者後 就會成為 app_enduser 欄位的 ID,如下所示:

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

如要瞭解如何發出執行這些擷取和撤銷的 API 呼叫,請參閱 以下智慧文件:

啟用 OAuth 2.0 權杖存取權的方式如下: User-ID 和應用程式 ID

依使用者 ID 和應用程式 ID 啟用 OAuth 2.0 權杖存取權的方式,取決於您的部署方式 邊緣:

  • 雲端式部署

    以雲端為基礎的 Edge 部署,意味著大部分的設定都是由 Apigee 處理。個人中心 僅負責設定 OAuth 2.0 政策來將使用者 ID 加入存取權中 產生下一個符記詳情請參閱下方的程序。

  • 私有雲部署作業的邊緣

    在 Apigee Edge for Private Cloud (地端部署) 中,您必須全權負責 此外還會從 0 自動調整資源配置 您完全不必調整資源調度設定詳情請參閱作業和 設定

  • Apigee Hybrid

    根據預設,系統會依使用者 ID 啟用 OAuth 2.0 權杖的存取權。個人中心 僅負責設定 OAuth 2.0 政策來將使用者 ID 加入存取權中 產生下一個符記詳情請參閱下方程序的步驟 5。

在雲端啟用存取權

步驟 1:啟用機構 支援這項功能

您必須為要支援這項功能的機構單位啟用這項功能。

請與 Apigee Edge 支援團隊聯絡,要求對方更新貴機構。

步驟 2:向 opsadmin 和 orgadmin 角色提供 OAuth2 資源權限

建議您僅提供 orgadminopsadmin 角色 具備可進行這些擷取 (get) 及撤銷 (put) 呼叫 oauth2以使用者 ID 或應用程式 ID 為依據的資源。

您可以使用 ,以瞭解哪些角色具有 getput 授予 oauth2 資源的權限。

如果需要新增或移除任何權限,請與 Apigee Edge 支援團隊聯絡, 要求他們執行更新

步驟 3:將現有的 OAuth 2.0 存取權杖複製到 Cassandra 節點

由 Apigee 支援執行:在這項工作中,目前 OAuth 2.0 的副本 系統會複製受影響機構中的存取權杖,並儲存在 Cassandra 節點中。這項程序 會對每個 Apigee Edge Pod 的 Cassandra 節點執行這樣一來, 擷取及撤銷 API 呼叫,以針對所有 OAuth 2.0 存取權杖 (現有和 。

步驟 4:將 oauth_max_search_limit 屬性新增至管理伺服器和訊息 處理器

在這項工作中,管理伺服器的 keymanagement.properties 檔案和 訊息處理器將更新以加入下列屬性:oauth_max_search_limit = 100100 是 Apigee 的建議值,但您可以視需要自行設定。

請聯絡 Apigee Edge 支援團隊,要求對方提供這項功能。

步驟 5:設定 OAuth 2.0 政策以產生包含使用者 ID 的存取權杖

設定用來產生存取權杖的 OAuth 2.0 政策,將使用者 ID 加入 產生下一個符記將使用者 ID 納入存取權杖後,您就能執行擷取作業 並依據使用者 ID 撤銷授權

如要設定這項政策,將使用者 ID 納入存取權杖,您必須指定 內含 User-ID 的輸入變數使用 <AppEndUser> 標記指定 變數。

下方名為 GenerateAccessTokenClient 的 OAuth 2.0 政策會產生 OAuth 2.0 存取權杖。請注意,新增 <AppEndUser> 標記以粗體顯示:

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

然後使用以下 cURL 指令產生 OAuth 2.0 存取權杖, 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'

在這個範例中,appuserID 會以要求標頭的形式傳遞您可以透過多種方式在要求中傳遞資訊。適用對象 舉例來說,您可以:

  • 使用以下表單參數變數:request.formparam.appuserID
  • 使用提供使用者 ID 的流程變數