Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS Cognito用户认证流程需要建议和建议_Amazon Web Services_Authentication_Amazon Cognito - Fatal编程技术网

Amazon web services AWS Cognito用户认证流程需要建议和建议

Amazon web services AWS Cognito用户认证流程需要建议和建议,amazon-web-services,authentication,amazon-cognito,Amazon Web Services,Authentication,Amazon Cognito,我正在尝试使用AWS的用户池服务在AWS上设置移动应用程序身份验证系统 由于这是一个仅限移动的应用程序,我只需要像whatsapp这样的OTP/MFA确认选项,在这里我遇到了我的第一个挑战 用户池需要用户名和密码,因为我使用的是内置的MFA,所以我使用了phone_number属性。我不需要任何用户名或密码。这是我的计划 允许在我的cognito凭据提供程序中使用未经验证的身份 已处理注册[用户名=cognito提供的身份,密码=“somethingxyz”(是,s/w中硬编码),电话号码=提供

我正在尝试使用AWS的用户池服务在AWS上设置移动应用程序身份验证系统

由于这是一个仅限移动的应用程序,我只需要像whatsapp这样的OTP/MFA确认选项,在这里我遇到了我的第一个挑战

用户池需要用户名和密码,因为我使用的是内置的MFA,所以我使用了phone_number属性。我不需要任何用户名或密码。这是我的计划

  • 允许在我的cognito凭据提供程序中使用未经验证的身份
  • 已处理注册[用户名=cognito提供的身份,密码=“somethingxyz”(是,s/w中硬编码),电话号码=提供的电话号码]
  • 在成功向otp注册后,将我的IdToken传递给凭据提供程序,并使用开始时创建的标识分配userpool用户

  • 我担心的是,在完成登录过程必须使用MFA的情况下,使用硬编码密码可以吗?是否可以将用户池帐户分配给未经验证的身份并将其转换为已验证的身份(为什么?因为我在注册过程中使用了该身份作为用户名,并且我不想要该用户池帐户的其他身份,但在尝试此操作时,我遇到了多个随机错误)?

    我想stackoverflow不需要建议或建议,因此,我将尝试将答案格式化为我认为您正在问的问题的答案,即“Cognito系统中的角色是什么,以及如何使用它们实现我的应用程序”。(这是我一个多月来一直试图为自己回答的问题)。我的答案是用IOS SDK API来描述的,但一般都适用

    Cognito Identity将向您发布“IdentityId”,但不会使用用户名或密码等管理这些身份的身份验证

    因此,如果您想对活动进行任何限制或控制,您需要某种注册流程。这可以使用Facebook身份、Google+身份或您自己的身份(称为BYOI带来您自己的身份)或新的Cognito用户池(AWS提供的身份提供商)。(所有这些“身份提供者”都在幕后提供某种令牌和身份提供者名称)。这些都不能提供IdentityId,这是cognitoidentity的工作

    Cognito凭据提供程序将CognitoIdentity Identity ID连接到AWS中的IAM角色,以便您可以临时获取Identity ID的AWS凭据,并使用S3、Lambda、DynamoDb等

    因此,不使用用户名和密码,意味着您没有任何身份验证,但您仍然可以拥有身份,Cognoto Identity将维护这些身份,并且它们将是唯一的(在移动设备之后)。但是用户将无法移动到另一个设备并保持相同的身份,因为他/她将无法告诉Cognito他/她的身份。这就是身份提供者所做的(他们通过询问密码/mfa等来检查您是否撒谎)

    API和SDK的命名很难理解,但基本上以CognitoIdentity开头的类不带Provider一词意味着该组件是联邦身份系统的一部分,而以CognitoIdentityProvider开头的类则是验证设备/用户是谁/说什么的东西。CognitoIdentityProviderManager返回CognitoIdentityProvider名称(如“graph.facebook.com”或cognito idp.us-east-1.amazonaws.com/)和令牌(以及OpenID连接令牌(OIDC)),让CognitoIdentity系统知道该用户已登录(它通过返回[name:Token]的登录字典来实现)Cognito在幕后使用开放Id连接服务器或其他服务器(如facebook)验证此令牌


    所以你的问题是,你将如何唯一地识别你的用户(我不知道whatsapp).

    hi-man.你成功了吗?我的应用程序还提供了基于OTP验证手机号码的登录功能,因为我不能将用户名为空,所以我也使用手机号码作为用户名。我使用手机号码和国家代码,并从中删除+项,所以用户可以很容易地创建任何用户选择的国家并提供其手机号码的内容。例如,+9196999XXX02到用户名:9196999XXX02