您目前查看的是 Apigee 和 Apigee Hybrid 說明文件。
查看
Apigee Edge 說明文件。
Apigee 提供一系列工具和政策,可讓您實作以 OAuth 2.0 權杖為基礎的驗證機制,確保 API 安全無虞。OAuth2 是最廣為支援的開放式標準,適用於 API 的驗證和授權,詳情請參閱 IETF RFC 6749。這項標準會將權杖建立為標準格式的憑證,供用戶端應用程式傳送至 API 實作項目。API 實作項目可以驗證權杖,判斷用戶端是否有權存取 API。
Apigee 允許開發人員實作四種 OAuth2 授權類型中的任一種,藉此產生存取和/或更新權杖,包括:用戶端憑證、密碼、隱含和授權碼,並使用 OAuthv2 政策。此外,API 開發人員可以使用 Apigee 實作自訂授權,包括遵循權杖交換模式的授權,如 IETF RFC 8693 所述。用戶端應用程式隨後會使用存取權杖來取用安全 API。每個存取權杖都有自己的到期時間,可在 OAuthv2 政策中設定。
Apigee 可視需要產生並傳回重新整理權杖,以及某些授權類型的存取權杖。原始存取權杖遭撤銷或過期後,用戶端會使用更新權杖取得新的存取權杖。您也可以在 OAuthv2 政策中設定重新整理權杖的到期時間。
反模式
在 OAuthv2 政策中,為存取權杖或重新整理權杖設定較長的到期時間,會導致權杖外洩時的漏洞擴大,造成安全風險。此外,這也可能導致 OAuth 權杖累積在永久儲存空間中,進而導致效能隨時間下降。
範例 1
下列 OAuthV2 政策範例顯示存取權杖的到期時間為 10 天:
<OAuthV2 name="OAuth-GenerateAccessToken">
<Operation>GenerateAccessToken</Operation>
<ExpiresIn>864000000</ExpiresIn> <!-- 10 days -->
<RefreshTokenExpiresIn>864000000</RefreshTokenExpiresIn> <!-- 10 days -->
<SupportedGrantTypes>
<GrantType>authorization_code</GrantType>
</SupportedGrantTypes>
<GenerateResponse enabled="true"/>
</OAuthV2>在上述範例中:
- 存取權杖的生命週期設為 10 天。
- 更新權杖的生命週期也設為 10 天。
影響
長期存取權杖會造成安全風險。如果權杖外洩或遺失,短期權杖自然會過期並失效,但長期權杖可能會在一段時間內繼續授予 API 存取權,增加安全漏洞。
存取權杖的生命週期應較短,可能約為 30 分鐘或更短,且應遠短於重新整理權杖的生命週期。
範例 2
下列 OAuthV2 政策範例顯示,更新權杖的到期時間為 200 天:
<OAuthV2 name="OAuth-GenerateAccessToken">
<Operation>GenerateAccessToken</Operation>
<ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes -->
<RefreshTokenExpiresIn>17280000000</RefreshTokenExpiresIn> <!-- 200 days -->
<SupportedGrantTypes>
<GrantType>authorization_code</GrantType>
</SupportedGrantTypes>
<GenerateResponse enabled="true"/>
</OAuthV2>在上述範例中:
- 存取權杖的合理且短暫的有效期限為 30 分鐘。
- 更新權杖的到期時間設為 200 天,非常長。
- 如果這個 API 的流量為每秒 10 個要求,則一天最多可產生 864,000 個權杖。
- 重新整理權杖會在 200 天後失效,並在整個生命週期內累積在資料儲存庫中。
影響
如果重新整理權杖的有效時間較長,資料存放區中可能會累積大量權杖,導致效能隨時間降低。在 Apigee Hybrid 中,權杖累積過多也可能導致持續層的磁碟空間耗盡。
最佳做法
請根據具體安全需求,為 OAuth 存取和重新整理權杖設定適當的到期時間,以縮短權杖外洩時的風險暴露期,並避免資料儲存庫中累積過多權杖。建議先將存取權杖效期設為 30 分鐘,更新權杖效期則設為 24 小時。
請設定更新權杖的到期時間,確保更新權杖的效期是存取權杖效期的倍數。舉例來說,如果將存取權杖設為 30 分鐘,則更新權杖的生命週期應設為 24 小時或 7 天,或任何適合您要支援的使用者體驗的時間。