【问题标题】:AWS Cognito/Amplify returning empty refresh tokenAWS Cognito/Amplify 返回空的刷新令牌
【发布时间】:2021-01-01 23:40:42
【问题描述】:

我在 cognito 中有一个用户池,它使用 Google 作为身份提供者。 现在,使用 Amplify,我们使用提供者为“Google”进行 FederatedSign,如下所示。

Auth.federatedSignIn({ provider: "Google" });.

这给了我访问令牌,id 令牌。但是刷新令牌是空的。 这是针对 oauth responseType:'token' 配置的。

我在其他地方看到我们需要将授权类型更改为“代码”,即 responseType: 'code' 以获取刷新令牌。

但在这种情况下,我在回调 url 中得到“code = some-value”,而不是访问令牌和刷新令牌。

我在这里错过了什么?

我的目标是能够获取刷新令牌 - 一旦访问令牌无效,使用此 Amplify 将刷新会话。

【问题讨论】:

  • 碰到这个,因为它仍然是一个问题,我相信它与“authenticationFlowType”或其他一些配置有关。我还在寻找解决方案...

标签: amazon-web-services oauth-2.0 amazon-cognito aws-amplify


【解决方案1】:

我正在使用parseCognitoWebResponse 并且遇到了同样的问题。

  1. 在您的用户池中转到应用程序客户端。检查您的 Cognito 应用程序客户端并确保没有生成客户端密码。如果填写了重新创建一个App Client而不生成一个Client Secret

  1. 将 response_type 更改为 code

window.location.href = `https://${yourCognitoDomain}?response_type=code&client_id=${yourClientId}&redirect_uri=${cognitoRedirectUrl}`

【讨论】:

    【解决方案2】:

    您需要将配置中的oauth.responseType 更改为'code' 而不是'token'。当我这样做时出现错误,我不知道为什么,但这是我发现你需要做的。

    【讨论】:

    • 我解决了这个问题。结果表明登录和注销的重定向 URL 必须与您发出请求的域相同,即从 localhost:3000 发出请求,重定向也必须返回到 localhost:3000。对于测试,我使用的是 localhost:5500 ,因此它给出了空令牌。 (我的 oauth 响应类型是代码)(在 cognito 设置中检查一次。)当重定向带有 URL 中的“代码”时,Amplify 会选择它并再发出一个请求以获取刷新令牌和其他凭据(到cognito TOKEN 端点。)
    • 我开始查看文档here,看起来codeAuthorization Code Flow 的简写。 token 似乎只是短期访问。
    猜你喜欢
    • 2018-04-03
    • 2020-09-28
    • 2017-11-22
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2019-06-22
    • 2018-07-02
    • 1970-01-01
    相关资源
    最近更新 更多