代码之家  ›  专栏  ›  技术社区  ›  Praveen

AWS cognito-从AWS cognito使用google登录时,是否可以获取google访问令牌并使用AWS访问令牌刷新

  •  3
  • Praveen  · 技术社区  · 8 年前

    当我从aws cognito登录页面使用google登录时,它会返回aws访问令牌。是否可以使用aws令牌检索google访问令牌并刷新令牌。 用于登录的url- https://example.auth.ap-southeast-1.amazoncognito.com//login?redirect_uri=redirect_uri&response_type=token&client_id=client_id .

    当使用google签名时,aws cognito如何处理刷新令牌?

    3 回复  |  直到 8 年前
        1
  •  2
  •   agent420    8 年前

    简言之,没有。

    当您使用上述URL使用Cognito Userpool的OAuth端点登录时,来自google的响应(即令牌)将发送到用户池域的OAuth响应端点( https://example.auth.ap-southeast-1.amazoncognito.com/oauth2/idpresponse ). Cognito检查来自Google的响应,并生成id、access和;根据使用的范围和身份验证流,刷新令牌并将其返回给您。来自Google的响应,即Google标记没有存储在某处,并且没有用于检索相同标记的Cognito API调用。

    至于使用Google登录时的令牌刷新,这取决于您的刷新令牌(由Cognito返回,而不是Google的刷新令牌)。只要从Cognito返回的刷新令牌有效,就可以使用它来获取新的id/access令牌。同样,这个过程根本不涉及谷歌。

        2
  •  2
  •   Sourav Sarkar    6 年前

    这不是一个完全可行的解决方案,但您可以在cognito中创建自定义属性,并在属性映射屏幕中映射它们: enter image description here

    当用户登录时,我看到 access_token expired_in 已捕获。但我看不到 refresh_token . 没有 刷新\u令牌 我们将无法从后端访问api。这似乎很接近啊!

        3
  •  1
  •   lvillacin    5 年前

    我将以苏拉夫·萨卡尔的答案为基础,提出一个你可以尝试的想法。如果你 将Google设置为OIDC提供商(不是内置的Cognito) 您可以尝试添加以下任一作用域:

    1. 脱机
    2. offline\u访问

    我们必须包含这些内容的原因是 默认情况下,Google只返回访问令牌 而不是刷新令牌。您必须指定需要刷新令牌才能检索它。

    不过,我不确定哪一个会起作用,也不确定添加任何作用域是否会起作用,因为我自己还没有尝试过。

    如果出于某种原因(例如Google API调用)确实需要刷新令牌, 您可以使用Auth0,因为它内置在他们的产品中。 我也没有尝试过,这也是我现在面临的一个问题,因为我不想使用Auth0。

    以下是我的参考资料: AWS OpenID Connect Oath 2.0 Scopes Google OAuth 2.0