AWS cognito - 从aws cognito

时间:2017-12-27 09:06:18

标签: amazon-web-services aws-cognito

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

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

3 个答案:

答案 0 :(得分:1)

简而言之,没有。

当您使用上述网址使用Cognito Userpool的OAuth端点登录时,Google(即令牌)的响应会发送到您的用户池域(https://example.auth.ap-southeast-1.amazoncognito.com/oauth2/idpresponse)的OAuth响应端点。 Cognito会检查来自Google的响应并生成ID,访问权限和刷新令牌并根据使用的范围和身份验证流程将这些返回给您。谷歌的回复,即谷歌代币没有存储在某处,也没有Cognito API调用来检索它。

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

答案 1 :(得分:1)

我将根据 Sourav Sarkar 的回答提出一个您可以尝试的想法。如果您将 Google 设置为 OIDC 提供商(不是 Cognito 中内置的提供商),您可以尝试添加以下任一范围:

  1. 离线
  2. offline_access

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

虽然是公平的警告,但我不确定哪个有效,也不确定添加任何范围是否有效,因为我自己没有尝试过。

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

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

答案 2 :(得分:0)

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

然后,当用户登录时,我看到access_tokenexpired_in被捕获。但是我看不到refresh_token。没有refresh_token,我们将无法从后端访问api。这似乎太遗憾了!