【问题标题】:apigee access tokens with apigee as identity providerapigee 作为身份提供者的 apigee 访问令牌
【发布时间】:2015-04-16 01:50:43
【问题描述】:

我最近一直在使用 apigee 的 baas,并且还在研究 edge。我知道,如果我用用户名和密码调用我的 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 作为身份提供者时,是否有人设法设置了刷新令牌?还是我找错树了?

谢谢

【问题讨论】:

    标签: oauth apigee apigee-baas


    【解决方案1】:

    查看https://github.com/apigee/api-platform-samples/tree/master/sample-proxies/advanced-api-services 处的示例代理,看看是否有帮助...该示例将 BaaS 密钥/秘密作为属性存储在 Apigee Edge Developer 对象上(对于示例来说很好,但诚然不是一个很好的产品练习),但您也可以轻松地将它们存储在 Apigee 的安全保险库中 (http://apigee.com/docs/api-reference/api/vaults)

    目前 BaaS 不支持刷新令牌。

    【讨论】:

    • 我会将其标记为正确,从技术上讲,我只需要知道 BaaS 不支持刷新令牌。真的有点遗憾,但希望这是他们会实施的东西
    猜你喜欢
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    • 2020-06-03
    • 2014-03-25
    • 2015-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多