核准及撤銷存取權杖

您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件
資訊

撤銷存取權並更新權杖

在某些情況下,應用程式必須明確撤銷權杖或使其失效,例如當使用者登出支援 OAuth 的應用程式時。如果您撤銷權杖,權杖在到期前可能隨時能重新核准。

權杖的撤銷程序是由 OAuth 2.0 權杖撤銷規格所定義。

Apigee Edge 提供 InvalidateToken 作業,可讓您設定專屬權杖撤銷端點。發布這個端點的 URI 後,應用程式開發人員就能撤銷 Edge 核發的權杖。

以下是 OAuthV2 政策和 InvalidateToken 作業的設定範例。在這種情況下,系統會一併撤銷存取權杖及其相關聯的更新權杖。技術上來說,Cascade 旗標設為 true,因此都會撤銷。如要進一步瞭解 cascade 旗標的運作方式,請參閱下方的權杖元素的屬性一節。

<OAuthV2 name="InvalidateToken">
  <Operation>InvalidateToken</Operation>
  <Tokens>
    <Token type="accesstoken" cascade="true">flow.variable</Token>
  </Tokens>
</OAuthV2>

<Tokens>/<Token> 元素

識別用於指定要撤銷權杖的流程變數。如果開發人員需要使用名為 access_token 的查詢參數提交撤銷要求,例如正確的資料流變數為:request.queryparam.access_token。如要要求 HTTP 標頭中的符記,例如將這個值設為 request.header.access_token

屬性

  • type (必要,字串):指定變數識別的權杖類型。支援的值為 accesstokenrefreshtoken:
    • 如要撤銷存取權杖,請指定類型 accesstoken。
    • 如要同時撤銷存取權和更新權杖,請指定 updatetoken。看到類型 updatetoken 時,Edge 會假設該符記是更新權杖。若找到該更新權杖,就會撤銷。如果找不到更新權杖,Edge 會檢查本身是否為存取權杖。如果存取權杖已存在,系統會撤銷該權杖。

      注意:如果您將已失效的權杖傳送至 InvalidateToken 政策,政策不會傳回錯誤,但您可能會預期會發生錯誤。這類作業不會產生任何影響。
  • cascade (選用、布林值、預設值:true) 這個屬性的主要用途是撤銷更新權杖,而不撤銷相關聯的存取權杖。請考量下列情況:
    • 僅撤銷更新權杖,不會撤銷相關聯的存取權杖。如要這麼做,請將 <Token> 類型設為 refreshtoken,並將 Cascade 設為 false
    • 同時撤銷存取權杖和更新權杖。如要這麼做,請將 <Token> 類型設為 accesstoken。Cascade 的值可以是 true (預設值) 或 false。如果設為 true,則存取權杖和更新權杖都會遭到撤銷。如果設為 false,系統會撤銷存取權杖,且更新權杖將無法使用。詳情請參閱下方的「注意事項」一節。
    • 撤銷存取權杖,不會撤銷相關聯的更新權杖。不支援。詳情請參閱下方的「備註」一節。

注意:基於安全考量,如果您撤銷了存取權杖,相關的更新權杖也會被撤銷。因此,您無法使用 cascade 屬性僅撤銷存取權杖。舉例來說,如果您將 <Token> 類型設為 accesstoken,並設定 cascade=false,系統就會撤銷存取權杖 (按照預期),但相關聯的更新權杖無法使用。但無法用來重新整理已撤銷的存取權杖。Cascade 屬性的主要用途是只想撤銷更新權杖。在這種情況下,請將 <Token> 類型設為 refreshtoken,並設定 cascade=false。系統會撤銷更新權杖,但相關聯的存取權杖仍有效 (直到權杖過期或遭撤銷為止)。詳情請參閱這個 社群論壇討論

核准存取權並更新權杖

使用 VerifyToken 作業「重新核准」已撤銷的權杖。也就是說,套用這項作業時,目標存取權或更新權杖的狀態會從「已撤銷」變更為「已核准」。您可以驗證任何尚未過期的已撤銷權杖。

<OAuthV2 name="ValidateToken">
  <Operation>ValidateToken</Operation>
  <Tokens>
    <Token type="refreshtoken" cascade="true">flow.variable</Token>
  </Tokens>
</OAuthV2>

<Tokens>/<Token> 元素

用於識別流程變數,指定要驗證的權杖。如果開發人員需要使用名為 access_token 的查詢參數提交驗證要求,例如正確的資料流變數為:request.queryparam.access_token。如要要求 HTTP 標頭中的符記,例如將這個值設為 request.header.access_token

屬性

  • type (必要,字串) 指定變數識別的權杖類型。支援的值為 accesstokenrefreshtoken
  • cascade (選用,布林值):根據預設,這個選項會設為 true,並將驗證套用至相關聯的權杖。因此,如果套用至更新權杖,也會驗證相關聯的存取權杖。如果套用到存取權杖,也會一併驗證相關聯的更新權杖。如果設為 false,則系統只會驗證指定的存取權或更新權杖。