【问题标题】:Get Credential Provider for Authenticated Users为经过身份验证的用户获取凭据提供程序
【发布时间】:2015-04-11 02:50:02
【问题描述】:

我的 android 应用程序使用 Google Plus 登录,我正在尝试将其与 Cognito 集成。当我运行该应用程序时,它给了我 Cognito Credential Provider ID,当我使用 Google Plus 登录时,它给了我 Google 令牌。我检查了我的 AWS Cognito,它显示了这一点。

Unauthenticated connections 3
Google Sign-in 0.

但是当它通过 Google 正确登录并且还为我提供 Google Token 时,我做错了什么?

编辑 1:这是我的代码:

Login with Google Plus

Cognito Sync Client Manager

【问题讨论】:

    标签: android amazon-web-services google-plus amazon-cognito credential-providers


    【解决方案1】:

    将来,您可能希望包含应用程序中的相关代码,以更好地帮助其他人为您提供帮助。

    您是否遵循integrating identity providers 的指南?

    同样重要的是要注意 CredentialsProvider 会延迟加载,这意味着简单地将令牌添加到提供者不会关联身份。为确保令牌实际上与身份相关联,您可以:

    • 调用另一个使用此提供程序的服务(例如 SyncManager)(推荐
    • 在您的 CredentialsProvider 上显式调用 refresh。 (仅推荐用于测试目的

    编辑 1

    您是否添加了我在原始答案中建议的测试?如果是这样,如果您收到任何错误怎么办?

    您可能想尝试以下一些步骤来验证您的配置:

    • 通过jwt.io 检查令牌。验证令牌的 azp 字段是否与输入到 Cognito 控制台的值匹配。
    • 通过IAM console 创建一个 OpenId Connect 提供程序,从 Google 控制台添加所有客户端 ID。在您的 Amazon Cognito 身份池中使用此提供程序而不是基本的 Google+ 集成。

    【讨论】:

    • 感谢您的回复。我遵循了集成身份提供者的指南。我还在问题中包含了指向我的代码的链接。请看一看。
    • @user2798227 您不应该将您的信息放在公共存储库中。您的池允许未经身份验证的访问,并且可能被滥用。
    • 我现在已经编辑了 cognito 身份池并将未经身份验证的角色更改为无,并且还取消了“启用未经身份验证的用户”。我在 Unauth_role_arn 的代码中留了空白,就像 private static final String UNAUTH_ROLE_ARN = ""; 我尝试再次运行程序,它运行,给了我凭据提供程序,然后我连接了 google plus,它给了我 google 令牌。然后我再次检查了 Cognito 控制台。它仍然显示 Signin with Google = 0。
    • @user2798227 我已经用其他信息更新了我的答案。
    • @user2798227 您的代码正在使用 SCOPE,这不是获取 id_token 的正确值。您应该将其更改为 mScope。此外,您似乎没有调用刷新或任何 api 调用。正如我在回答中提到的,这将确保在身份上强制执行链接。
    猜你喜欢
    • 1970-01-01
    • 2022-01-10
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 2017-12-24
    • 2018-11-28
    • 2020-07-22
    • 2021-11-29
    相关资源
    最近更新 更多