查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
總覽
撤銷與開發人員應用程式 ID 或應用程式使用者 ID 相關聯的 OAuth2 存取權杖,或撤銷兩者。
使用 OAuthv2 政策產生 OAuth 2.0 存取權杖。Apigee 產生的權杖 格式如下:
{ "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
元素包含與權杖相關聯的開發人員應用程式 ID。
根據預設,Apigee 不會在權杖中加入使用者 ID。您可以設定 Apigee
將 <AppEndUser>
元素新增至 OAuthv2 政策,藉此取得使用者 ID:
<OAuthV2 name="GenerateAccessTokenClient"> <Operation>GenerateAccessTokenV/Operation> ... <AppEndUser>request.queryparam.app_enduser</AppEndUser> </OAuthV2>
在本範例中,請將使用者 ID 傳送至名為 app_enduser
的查詢參數中的 OAuthv2 政策。
接著,使用者 ID 會包含在 app_enduser
元素的權杖中:
{ "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" }
由開發人員應用程式 ID 撤銷
撤銷與開發人員應用程式 ID 相關聯的 OAuth2 存取權杖。 Apigee 產生的所有 OAuth2 存取權杖都包含相關聯的開發人員應用程式 ID 與憑證建立連結接著,您就能根據該應用程式 ID 撤銷權杖。
使用 Developer apps API 取得特定開發人員的應用程式 ID 清單。
您也可以使用 Developer Apps API 以取得應用程式的詳細資料。
依應用程式使用者 ID 撤銷
撤銷與特定應用程式使用者 ID 相關聯的 OAuth2 存取權杖。這就是符記 與核發權杖的使用者 ID 相關聯。
在預設情況下,OAuth 存取權杖中沒有用於使用者 ID 的欄位。如要啟用撤銷 依使用者 ID 劃分的 OAuth 2.0 存取權杖,您必須設定 OAuthv2 政策以加入使用者 ID 標記中,如上所示。
如要取得應用程式使用者 ID,請使用 Developer Apps API:
範例
以下範例使用「撤銷 OAuth V2」政策撤銷 OAuth2 存取權杖。
開發人員應用程式 ID
如要依開發人員應用程式 ID 撤銷存取權杖,請在以下位置使用 <AppId>
元素:
您的政策。
下列範例預期在名為
app_id
:
<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy"> <DisplayName>Revoke OAuth v2.0-1</DisplayName> <AppId ref="request.queryparam.app_id"></AppId> </RevokeOAuthV2>
根據開發人員應用程式的 ID,這項政策會撤銷存取權杖。
在時間戳記之前撤銷
如要根據開發人員應用程式 ID 在特定日期和時間撤銷存取權杖,
在政策中使用 <RevokeBeforeTimestamp>
元素。<RevokeBeforeTimestamp>
會指定以毫秒為單位的 UTC Epoch 紀元時間。在該時間前核發的所有權杖都會遭到撤銷。
以下範例針對 2019 年 7 月 1 日前建立的開發人員應用程式,撤銷其存取權杖:
<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy"> <DisplayName>Revoke OAuth v2.0-1</DisplayName> <AppId ref="request.queryparam.app_id"></AppId> <RevokeBeforeTimestamp>1561939200000</RevokeBeforeTimestamp> </RevokeOAuthV2>
<RevokeBeforeTimestamp>
元素採用 64 位元 (長) 整數,代表
自世界標準時間 1970 年 1 月 1 日午夜起經過的毫秒數。
元素參照
元素參照會說明 RevokeOAuthV2 政策的元素和屬性。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RevokeOAuthV2 continueOnError="false" enabled="true" name="GetOAuthV2Info-1"> <DisplayName>Get OAuth v2.0 Info 1</DisplayName> <AppId ref="variable"></AppId> <EndUserId ref="variable"></EndUserId> <RevokeBeforeTimestamp ref="variable"></RevokeBeforeTimestamp> <Cascade>false</Cascade> </RevokeOAuthV2>
<撤銷 OAuthV2>屬性
<RevokeOAuthV2 continueOnError="false" enabled="true" name="Revoke-OAuth-v20-1">
下表說明所有政策父項元素的共同屬性:
屬性 | 說明 | 預設 | 存在必要性 |
---|---|---|---|
name |
政策的內部名稱。 視需要使用 |
不適用 | 必填 |
continueOnError |
如果設為「 如果設為 |
false | 選用 |
enabled |
如要強制執行政策,請設為 設為 |
true | 選用 |
async |
此屬性已淘汰。 |
false | 已淘汰 |
<DisplayName>元素
除 name
屬性外,一併使用
管理 UI Proxy 編輯器,使用不同的自然語言名稱。
<DisplayName>Policy Display Name</DisplayName>
預設 |
不適用 如果省略這個元素,政策的 |
---|---|
存在必要性 | 選用 |
類型 | 字串 |
<AppId>元素
指定要撤銷權杖的開發人員應用程式 ID。傳送包含 應用程式 ID 或常值應用程式 ID
<AppId>appIdString</AppId> or: <AppId ref="request.queryparam.app_id"></AppId>
預設 |
|
---|---|
存在必要性 |
選用 |
類型 | 字串 |
有效值 |
包含應用程式 ID 字串的流程變數,或常值字串。 |
<街機遊戲>元素
如果 true
而且您擁有傳統的不透明存取權杖,
如果 <AppId>
或
<EndUserId>
相符。
如果是 false
,
則只會撤銷存取權杖,更新權杖則維持不變。同樣的行為
僅適用於不透明存取權杖
<Cascade>false<Cascade>
預設 |
false |
---|---|
存在必要性 |
選用 |
類型 | 布林值 |
有效值 | true 或 false |
<EndUserId>元素
指定要撤銷權杖的應用程式使用者 ID。傳送包含 使用者 ID 或常值權杖字串
<EndUserId>userIdString</EndUserId> or: <EndUserId ref="request.queryparam.access_token"></EndUserId>
預設 |
|
---|---|
存在必要性 |
選用 |
類型 | 字串 |
有效值 |
包含使用者 ID 字串的流程變數,或常值字串。 |
<RevokeBeforeTimestamp>元素
撤銷時間戳記之前核發的權杖。這個元素可與 <AppId>
搭配使用
和 <EndUserId>
可讓您在特定時間前撤銷權杖。
預設值為政策的執行時間。
<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp> or: <RevokeBeforeTimestamp ref="request.queryparam.revoke_since_timestamp"></RevokeBeforeTimestamp>
預設 |
執行政策的時間戳記。 |
---|---|
存在必要性 |
選用 |
類型 | 64 位元 (長) 整數,代表自午夜起經過的毫秒數, 世界標準時間 1970 年 1 月 1 日 |
有效值 |
包含時間戳記的流程變數,或常值時間戳記。 時間戳記不得為未來日期,且不得早於 2014 年 1 月 1 日。 |
流程變數
RevokeOAuthV2 政策不會設定流程變數。
錯誤參考資料
本節說明在這項政策觸發錯誤時,所傳回的錯誤代碼和錯誤訊息,以及 Edge 所設定的錯誤變數。 請務必瞭解這份資訊,以便瞭解您是否要擬定錯誤規則, 處理錯誤詳情請參閱這篇文章 瞭解政策錯誤和處理方式 發生錯誤
執行階段錯誤
執行政策時,可能會發生這些錯誤。下方顯示的錯誤名稱
是系統發生錯誤時指派給 fault.name
變數的識別碼。查看錯誤
變數一節。
錯誤程式碼 | HTTP 狀態 | 原因 |
---|---|---|
steps.oauth.v2.InvalidFutureTimestamp |
500 | 時間戳記不得為未來的時間。 |
steps.oauth.v2.InvalidEarlyTimestamp |
500 | 時間戳記不得早於 2014 年 1 月 1 日。 |
steps.oauth.v2.InvalidTimestamp |
500 | 時間戳記無效。 |
steps.oauth.v2.EmptyAppAndEndUserId |
500 | AppdId 和 EndUserId 不得留空。 |
部署錯誤
如要瞭解部署錯誤,請參閱使用者介面中回報的訊息。
錯誤變數
當這項政策在執行階段觸發錯誤時,即可設定這些變數。
錯誤回應範例
{ "fault":{ "faultstring":"Timestamp is in the future.", "detail":{ "errorcode":"steps.oauth.v2.InvalidFutureTimestamp" } } }
錯誤規則範例
<FaultRule name="RevokeOAuthV2 Faults"> <Step> <Name>AM-InvalidTimestamp</Name> </Step> <Condition>(fault.name = "InvalidFutureTimestamp")</Condition> </FaultRule>