【问题标题】:Cognito - User Pools App Integration and Federation - ¿How refresh id_token?Cognito - 用户池应用集成和联合 - ¿如何刷新 id_token?
【发布时间】:2018-02-18 23:10:52
【问题描述】:

我正在使用 AWS Cognito 的一项新功能,它是一个与用户池集成的应用程序,有关更多详细信息,请参阅https://github.com/aws/amazon-cognito-auth-js。这里有一个例子,在这个例子中我可以得到id令牌,访问令牌但是刷新令牌是空的。

我查看了 Amazon Congito --> Amazon Cognito API Reference --> Amazon Cognito Auth API Reference --> AUTHORIZATION Endpoint 中的文档

  • 对于没有 openid 的作用域

“Amazon Cognito 授权服务器使用访问令牌重定向回您的应用程序。由于未请求 openid 范围,因此不会返回 ID 令牌。此流程中永远不会返回刷新令牌。令牌和状态在片段中返回,而不是在查询字符串中”。

  • 适用于具有 openid 的范围

“授权服务器使用访问令牌和 ID 令牌重定向回您的应用程序(因为包含了 openid 范围)。”

注意:这里没有说刷新令牌,但是它的响应这个端点是

https://YOUR_APP/redirect_ur#id_token=ID_TOKEN&access_token=ACCESS_TOKEN&token_type=bearer&expires_in=3600&state=STATE

然后¿我不知道如何刷新我的 id_token 以使用超过一个小时? (使用 openid 范围)

【问题讨论】:

    标签: amazon-web-services aws-sdk aws-cognito


    【解决方案1】:

    有两个认证流程

    • 隐式流:仅发送 tokenId 和访问令牌
    • Auth 授权流程:首先你会得到一个代码,你可以用它来交换一个三元组令牌(TokenId、Access Token 和 Refresh Token)

    我使用的是隐式流,为此我无法获得刷新令牌。在示例中,在 index.html 文件中,有一行“auth.useCodeGrantFlow();”如果取消注释此行,则切换隐式流-> Auth 授权流。 此时有一个拉取请求,因为此流程中有一个错误。更多详情enter link description here(拉取请求#32)

    我已经更改了来自拉取请求的同一个文件的 dist/amazon-cognito-auth.js 文件,它工作正常

    注意:在没有 Secret 的情况下在 Cognito 用户池中配置您的应用很重要,因为如果您不这样做,则会出现“invalid_client”错误。这是因为 sdk 在 Auth 授权流程中发布到 /oauth/token 端点时没有考虑标题“Authorization”

    【讨论】:

      【解决方案2】:

      这个问题和答案有很多内容。我会说,对我来说,切换到没有密钥的用户池成功了。

      【讨论】:

        猜你喜欢
        • 2017-02-28
        • 2018-07-07
        • 2018-11-07
        • 2018-05-16
        • 1970-01-01
        • 2017-11-22
        • 2018-02-11
        • 2016-12-30
        • 2016-09-23
        相关资源
        最近更新 更多