1

我最近一直在使用 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 作为身份提供者时,是否有人设法设置了刷新令牌?还是我在叫错树?

谢谢

4

1 回答 1

0

查看https://github.com/apigee/api-platform-samples/tree/master/sample-proxies/advanced-api-services上的示例代理,看看是否有帮助...示例存储 BaaS密钥/秘密作为 Apigee Edge Developer 对象的属性(对于示例来说很好,但不可否认,这不是一个很好的生产实践),但您可以轻松地将它们存储在 Apigee 的 Secure Vault 中(http://apigee.com/docs/api-参考/api/保险库

目前 BaaS 不支持刷新令牌。

于 2015-09-02T18:17:09.693 回答