反模式:為 OAuth 權杖設定無到期時間

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

Apigee Edge 提供 OAuth 2.0 架構, 安全 APIOAuth2 是最常見的開放標準式權杖式驗證 授權機制可讓用戶端應用程式代表使用者存取 API,而不必 要求使用者提供自己的使用者名稱和密碼。

Apigee Edge 可讓開發人員透過實作任一種 四種 OAuth2 授權類型: 用戶端憑證password隱含授權碼 - 使用 OAuthv2 政策。 用戶端應用程式會透過存取權杖使用安全的 API。每個存取權杖都有各自的到期時間 您可以在 OAuthv2 政策中設定。

您可以選擇將更新權杖與某些授權類型一起核發。重新整理 權杖可用於取得新的有效存取權杖。 已撤銷。您也可以在 OAuthv2 政策中設定更新憑證的到期時間。

這項反面模式與 設定較長的到期時間 對於 OAuth 權杖而言。

反模式

OAuthv2 政策中,設定更新權杖沒有到期時間 會造成 OAuth 權杖的累積,並增加 Cassandra 節點上的磁碟空間。

以下 OAuthV2 政策範例顯示缺少設定: <RefreshTokenExpiresIn>:

<OAuthV2 name="GenerateAccessToken">
    <Operation>GenerateAccessToken</Operation>
    <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes -->
    <!--<RefreshTokenExpiresIn> is missing -->
    <SupportedGrantTypes>
      <GrantType>password</GrantType>
    </SupportedGrantTypes>
    <GenerateResponse enabled="true"/>
</OAuthV2>

在上述範例中:

  • 存取權杖的到期時間合理,但持續時間約為 30 分鐘。
  • 未設定更新權杖的到期時間。
  • 重新整理權杖會永久保留在資料儲存庫 (Cassandra) 中,導致資料 以及累計
  • 沒有到期時間的更新權杖可以無限期用於產生存取權杖。
  • 如果這個 API 的流量每秒為 10 個要求,可以產生最多 864,000 個權杖 一天後

影響

  • 如果在沒有到期日的情況下建立更新權杖,系統會產生兩個主要結果:
    • 更新權杖日後隨時都可使用 (可能為數年) 取得存取權 產生下一個符記這可能會對安全性造成影響。
    • 在 Cassandra 中,含有更新權杖的資料列一律不會刪除。 這會在 Cassandra 中累積資料。
  • 如果不使用更新權杖 取得新的存取權杖,但改為建立新的更新權杖和存取權杖 舊版的更新權杖會保留在 Cassandra 中。因此,重新整理 符記會繼續在 Cassandra 中累積,進一步增加 會增加磁碟用量以及密集壓縮,最終將會導致讀取/寫入 提供最久的延遲時間

最佳做法

請務必為重新整理和存取權杖使用適當的到期時間。詳情請見 最佳做法 以便設定到期日 更新次數和存取權杖請務必為這兩種存取權指定到期日 並更新政策中的權杖詳情請參閱 OauthV2 政策說明文件 ,進一步瞭解政策設定。

Edge 私有雲客戶適用的最佳做法

本節說明 Edge 私有雲客戶適用的最佳做法。

指定預設的更新權杖到期時間

根據預設,如果政策設定中未指定更新權杖到期時間, Edge 會建立沒有到期時間的更新權杖。如要覆寫這個行為 下列程序:

  1. 在訊息處理器節點上編輯或建立設定覆寫檔案 $APIGEE_ROOT/customer/application/message-processor.properties。請確認這個檔案: 可由 apigee 使用者讀取。
  2. 在檔案中新增下列程式碼:
    conf_keymanagement_oauth_refresh_token_expiry_time_in_millis=3600000
    敬上 如未在政策中指定更新權杖,系統會將預設的更新權杖到期時間設為 1 小時。 不過,您可以根據業務需求變更這個預設價值。
  3. 重新啟動訊息處理工具服務:
    apigee-service edge-message-processor restart
  4. 逐一重複執行所有訊息處理器節點的步驟。
,瞭解如何調查及移除這項存取權。 ,瞭解如何調查及移除這項存取權。

Cassandra 的最佳做法

嘗試升級至可公開發布的最新版 Apigee。Apigee 繼續 發布修正和強化功能,持續改善及改善管理體驗 符記在 Apigee 中,存取和重新整理權杖會儲存在 Cassandra 中 置於「kms」鍵空間中。您應該確保 鍵空間設為「LeveledCompactionStrategy」。 您應檢查下列索引「並未」顯示:
  • 公里.oauth_20_access_tokens.oauth_20_access_tokens_organization_name_idx#f0f0f0 和
  • kms.oauth_20_access_tokens.oauth_20_access_tokens_status_idx

您也可以 kms.oauth_20_access_tokens 表格中的 gc_grace_seconds 從預設的 10 天改為較低的 值 (例如 3 天),確保因權杖遭到刪除而產生 就會更快從資料儲存庫中清除。

延伸閱讀