反模式:為 OAuth 權杖設定較長的到期時間

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

Apigee Edge 提供 OAuth 2.0 架構來保護 API。OAuth2 是最常見的開放標準權杖式驗證與授權配置之一。可讓用戶端應用程式代表使用者存取 API,不必要求使用者提供使用者名稱和密碼。

Apigee Edge 可讓開發人員採用 OAuthv2 政策實作下列四種 OAuth2 授權類型之一,產生存取權和/或更新權杖:用戶端憑證密碼隱含授權碼。用戶端應用程式會使用存取權杖來使用安全的 API。每個存取權杖都有各自的到期時間,您可以在 OAuthv2 政策中設定到期時間。

您可選擇一併核發更新權杖以及存取權杖和部分授權類型的存取權杖。原始存取權杖過期或遭撤銷後,系統會使用重新整理權杖取得新的有效存取權杖。您也可以在 OAuthv2 政策中設定更新權杖的到期時間。

反模式

OAuthv2 政策中為存取權杖和/或更新權杖設定較長的到期時間,會導致 OAuth 權杖增加,並在 Cassandra 節點上增加磁碟空間。

下列 OAuthV2 政策範例顯示更新權杖的到期時間為 200 天:

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

在上述範例中:

  • 存取權杖設有合理較低的到期時間 (即 30 分鐘)。
  • 更新權杖設定的到期時間極長為 200 天。
  • 如果傳送至這個 API 的流量為每秒 10 個要求,則一天最多可產生 864,000 個權杖。
  • 由於更新權杖僅會在 200 天後過期,因此這類權杖會長期保留在資料儲存庫 (Cassandra) 中,以便持續累積。

影響程度

  • 因此可能對資料儲存庫 (Cassandra) 的磁碟空間用量大幅增加。
  • 以 Private Cloud 使用者來說,這可能會導致儲存空間費用增加,最糟的情況甚至可能導致磁碟已滿,導致執行階段錯誤或服務中斷。

最佳做法

請依據您的特定安全性需求,為 OAuth 存取權和重新整理權杖設定適當的到期時間,以便快速清除,以免累積錯誤。

設定更新權杖的到期時間,使其有效期限比存取權杖更長。舉例來說,假設您將存取權杖設為 30 分鐘,然後為更新權杖設定 60 分鐘。

這能確保:

  • 存取權杖過期之後,您有充足的時間可以使用更新權杖產生新的存取權和更新權杖。
  • 重新整理權杖會在一段時間後到期,並能及時清除,避免累積權杖。

其他資訊