使用多个登录名的Cognito身份

时间:2019-03-02 13:41:46

标签: amazon-web-services amazon-cognito aws-sdk-cpp

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

我想通过Cognito用户池以及Facebook,Twitter,Google对用户进行身份验证。

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

在示例中,我看到了场景:

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

首先,我不确定我的方案是否正确,但这是我在阅读了许多此处的文章和AWS文档后才意识到的。

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

在AWS C ++ SDK中,为了刷新AWS Credential,使用了呼叫CognitoIdentityClient.GetCredentialsForIdentity,但它要求传递用户登录信息。

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

1 个答案:

答案 0 :(得分:0)

首先,您可以使用联合身份而不使用cognito用户池。这意味着您可以直接通过facebook,google等直接对用户进行身份验证,而不必将其添加到用户池中。如果确实希望所有用户都在用户池中,则必须编写代码以接受来自这些身份验证提供程序的某些参数,然后将它们以及用户名和密码添加到用户池中。

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