当前位置: 首页 > 知识库问答 >
问题:

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

甄华清
2023-03-14

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

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

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

  1. 允许在我的cognito凭据提供程序中使用未经身份验证的身份。

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

共有1个答案

凌伟泽
2023-03-14

我猜stackoverflow不想要建议或建议,所以我会尝试将答案格式化为我认为你正在问的问题的答案,即“认知系统中的角色是什么,以及我如何用它们实现我的应用”。(这是我一个多月来一直试图为自己解答的问题)。我的答案是根据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)验证此令牌。

所以你的问题是,你将如何唯一地识别你的用户(我不知道什么是应用程序)。

 类似资料:
  • 我有一个场景,其中我得到一个String消息列表,我必须遍历String并调用另一个方法,这是一个长时间运行的过程。然后我必须收集这个长时间运行过程的结果并连接结果并将其发送回用户交互界面。我对Scala中的这些未来概念很陌生。我正在使用Play框架,其中字符串列表将来自用户交互界面。这是我第一次尝试实现ht场景的样子: 为简单起见,long RunningCall将只返回一个字符串。稍后我将把它

  • 关于如何使用Java处理自签名证书的问题已经被问过很多次,并且经常提供实现。但是,我不确定这些实现是否会给我带来我正在寻找的安全性/信任。 我的情况如下:我有一个连接到服务器应用程序的客户端程序。这两者我们都可以完全控制。我们的客户使用https将流发布到我们服务器上的URL,服务器响应。目前(这就是我试图修复的)服务器有一个自签名证书。Java不喜欢这样,并且仅用于测试,我们通过信任任何证书几乎

  • 使用电子邮件和密码创建用户后,我正在调用我所知道的是,Firebase首先使用电子邮件和密码创建用户,然后向该用户发送验证邮件。 如果用户可以访问该邮件id并验证使。 但是,如果用户未能验证邮件或他/她无法访问提供的邮件,电子邮件ID将被锁定,因为帐户是使用该电子邮件ID创建的。 我的问题是,当用户无法验证电子邮件时该怎么办?

  • 我正试图提出一种优化的架构,将事件日志消息存储在Elasticsearch上。 以下是我的规格/需求: 消息是只读的;输入后,仅查询报告 因此,执行最频繁的查询将是:获取给定的所有登录项、客户id和时间戳范围。 以下是登录项的外观: 我需要帮助索引我的数据。 我一直在读什么是elasticsearch索引?使用elasticsearch为客户提供事件服务,以获得良好索引架构的想法,但我需要专业人士

  • 如何初始化SDK并且让基本的用户名密码认证成功 通过阅读此文档,您可以完成用户密码登录认证,并成功启动VPN SDK 此文档默认已经集成SDK并且工程可以编译通过运行 您完全可以参考demo(特别是 AuthViewController.m)进行代码编写,但此文档仍然列出了必要的步骤 此文档只是参考,您应该根据具体需求因地适宜 此文档会略过如头文件import等基本概念与步骤,只介绍重要的概念 在

  • 嘿,所以我为ExecutorService的java文档选择了这个例子。我想确认这个代码的流程,执行者。newFixedThreadPool将创建一个线程池(我猜)。所以serversocket将等待连接,一旦获得连接,就会启动一个线程,所以现在池大小减少1。一旦线程完成执行,池大小将再次增加1,不是吗?线程会放弃它使用的资源吗?