<ph type="x-smartling-placeholder"></ph>
您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 信息
Apigee Edge 提供了 OAuth 2.0 框架, 安全 API。OAuth2 是一种最常用的基于令牌的开放标准身份验证和授权方案之一。它允许客户端应用代表用户访问 API,而无需用户泄露用户名和密码。
Apigee Edge 允许开发者通过实现任意一种 API 方式来生成访问令牌和/或刷新令牌, 四种 OAuth2 授权类型 客户端凭据、 password、 隐式和 授权代码 - 使用 OAuthv2 政策。 客户端应用使用访问令牌来消耗安全 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 分钟。
这可确保:
- 在访问令牌过期后,您有充足的时间使用刷新令牌生成新的访问令牌和刷新令牌。
- 刷新令牌将稍晚过期,并且可被及时清除以避免累积。