2016-09-30 62 views
0

我正尝试使用其用户池服务在AWS上设置移动应用程序身份验证系统。AWS Cognito用户身份验证流程需要建议和建议

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

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

  1. 允许我的cognito凭证提供程序中的未经身份验证的身份。
  2. 耗时注册[用户名=由cognito,口令= “somethingxyz”(是的,硬编码在S/W),PHONE_NUMBER =提供的电话号码提供身份]
  3. 与OTP成功注册后通过我的IdToken向证书提供商&分配具有在开始时创建的身份的用户池用户。

我的担忧是,使用硬编码密码是好的情况下MFA是完成登录过程的强制性?是否有可能将用户池帐户分配给未经身份验证的身份并将其转换为身份验证(为什么?因为我在注册过程中将该身份用作用户名,并且我不想为该用户池帐户设置其他身份,但在尝试此操作时我得到了多个随机错误虽然)?

+0

我的应用程序还具有基于OTP验证手机号码的登录功能,因为我不能给用户名留白,我也使用手机号码作为用户名。 – desidigitalnomad

+1

我使用手机号码和国家代码带+ +,所以用户名很容易建立任何用户选择国家和provid他的手机号码。例如。 + 919699XXX02到用户名:9196999XXX02 –

回答

3

我想stackoverflow不需要建议或建议,所以我会尝试格式化答案作为我认为你问的问题的答案,即“Cognit系统中的角色是什么以及如何与他们一起实施我的应用“。 (这是我一直试图回答自己一个月或更长时间的问题)。我的答案用IOS SDK API来描述,但通常会适用。

Cognito身份将发给您“IdentityId的”,但不管理与用户名或密码等这些身份的认证

所以,如果你想对活动的任何限制或控制,就需要某种形式的注册过程。这可以使用Facebook身份,Google+身份或您自己的身份(称为BYOI带来您自己的身份)或新的Cognito用户池(由AWS提供身份提供商)。 (所有这些“身份提供商”都在幕后提供某种令牌和身份提供商名称)。这些都没有提供IdentityId,这是Cognito Identity的工作。

Cognito凭据提供连接一CognitoIdentity IdentityId在AWS的IAM角色,这样就可以暂时获得AWS凭据的IdentityId,并使用S3,λ,DynamoDb等

所以不使用用户名和密码,手段您没有任何身份验证,但您仍然可以拥有身份,Cognito身份会维护它们,并且它们将是唯一的(遵循移动设备)。但是用户将无法移动到其他设备并保持相同的身份,因为他/她无法告知Cognito他/她的身份。这就是身份提供者所做的事情(并且他们通过询问密码/ mfa等来检查你是不是在撒谎)。

API和SDK的命名很难理解,但基本上是以CognitoIdentity开头而没有单词的类。提供程序意味着组件是联合身份系统的一部分,以CognitoIdentityProvider开头的类是验证设备/用户是谁/它说什么。 CognitoIdentityProviderManager返回一个CognitoIdentityProvider名称(如“graph.facebook.com”或cognito-idp.us-east-1。amazonaws.com/)和令牌(以及OpenID Connect令牌(OIDC)),让CognitoIdentity系统知道该用户已登录(它通过返回登录字典[name:token]到CognitoIdentity。场景验证此令牌与公开识别连接服务器或其他服务器(IE脸谱)。

所以对于你的问题是,你怎么来唯一地标识用户(我不知道WhatsApp的)。