我最近一直在使用 apigee 的 baas 并且也在研究边缘。我知道,如果我用用户名和密码调用我的 baas/token 端点,我显然可以为用户取回有效的访问令牌。但是,这没有刷新令牌,用户必须根据 TTL 重新登录。现在我注意到在 apigee 边缘设置和 oauth 策略中,您可以访问刷新令牌,但我不知道如何使用 apigee BAAS 作为我的身份提供者进行设置。我已经成功创建了一个新的 oauth 代理。首先,我从请求中提取用户名和密码。然后,我将这些分配给命中我的 BAAS 的新服务标注。这成功地传回了正确的用户详细信息和有效的 BAAS 访问令牌。
此时我使用标准的 GenerateAccessToken 策略
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<OAuthV2 async="false" continueOnError="false" enabled="true" name="OAuth-v20-1">
<DisplayName>OAuth v2.0 1</DisplayName>
<FaultRules/>
<Properties/>
<Attributes/>
<Operation>GenerateAccessToken</Operation>
<ExpiresIn>8640000</ExpiresIn>
<SupportedGrantTypes>
<GrantType>password</GrantType>
</SupportedGrantTypes>
<GrantType>grant_type</GrantType>
<UserName>username</UserName>
<PassWord>password</PassWord>
<GenerateResponse enabled="true"/>
</OAuthV2>
这里的所有变量都设置正确。但我还必须设置一个基本的授权标头。此标头基于 base64 编码的 client_id 和与我的边缘应用关联的客户端字符串。但是,如果我尝试调用 BAAS 端点(即使通过边缘代理),则从此处返回的访问令牌不起作用,并且与此返回的“用户”详细信息与与提供的 client_id 关联的用户有关,不是提交用户名和密码的用户(我知道我可以混合来自我的服务调用的响应,但这更多的是关于 access_tokens 而不是用户数据)。我明白为什么会这样,因为显然 access_tokens 是为不同的资源发布的,但我认为这种设置几乎可以在幕后“管理”它。使用 apigee BAAS 作为身份提供者时,是否有人设法设置了刷新令牌?还是我在叫错树?
谢谢