1

我开始使用 AWS C++ SDK 与 AWS Cognito 实施联合身份验证。

我想使用 Cognito 用户池和 Facebook、Twitter、Google 对用户进行身份验证。

我知道我可以在单个用户标识符 (Cognito identityId) 下链接多个登录,但只有在首次登录后手动添加此类登录时才有可能。

例如,我看到场景:

  1. 使用 Cognito UserPool 注册用户。
  2. 然后,保持身份验证,用户使用 Facebook 进行身份验证。并且 Facebook 令牌可以添加到登录中。
  3. 在进一步检索 AWSCredentials 调用过程时 - Facebook 登录将添加到 Cognito 身份池中的用户身份。
  4. 之后,用户可以使用 UserPool 凭据并通过 Facebook 身份验证在相同的用户身份下登录。

首先,我不确定我的场景是否正确,但这是我在阅读了这里的许多帖子和 AWS 文档后才意识到的。

如果场景正确,那么我会遇到另一个问题:如何刷新令牌?

在 AWS C++ 开发工具包中,为了刷新 AWS 凭证,CognitoIdentityClient.GetCredentialsForIdentity使用了调用,但它需要传递用户登录信息。

我更具体的问题:我需要通过所有登录吗?是否要求登录中的所有访问令牌都没有过期?

4

1 回答 1

0

针对您的第一点,您可以在不使用 cognito 用户池的情况下使用联合身份。这意味着您可以直接使用 facebook、google 等简单地对用户进行身份验证,而不是将它们添加到用户池中。如果您确实希望所有用户都在用户池中,那么您必须编写代码以接受来自这些身份验证提供程序的某些参数,然后将它们与用户名和密码一起添加到您的用户池中。

现在回答你的问题。要刷新令牌,您必须使用InitiateAuth。在身份验证流程中,您必须传递“REFRESH_TOKEN_AUTH”,在 AuthParameters 中,您必须传递刷新令牌。

于 2019-03-04T04:01:59.460 回答