查看 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 資源權限
建議您僅提供 orgadmin 和 opsadmin 角色
具備可進行這些擷取 (get
) 及撤銷 (put
) 呼叫
oauth2
以使用者 ID 或應用程式 ID 為依據的資源。
您可以使用
,以瞭解哪些角色具有 get
和 put
授予 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 =
100
。100
是 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 的流程變數