问题标签 [aws-userpools]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
68 浏览

javascript - AWS Cognito 用户池和身份池之间的关系

用户池和身份池中的项目是如何关联的?如何identityId根据 Cognito 用户查找 Cognito sub?如何sub根据 Cognito查找 Cognito 用户identityId?另外,我目前使用 CognitoidentityId作为用户 ID 来识别我的应用程序中的用户,我应该使用它sub吗?如果由于帐户取消而想删除用户,我是否也应该删除该用户identityId

我使用 JavaScript SDK。

0 投票
0 回答
190 浏览

ios - AWS 用户池和 Google 联合身份验证

您好,我目前正在通过Cognito 用户池对用户进行身份验证。但是,我现在还需要添加对联合身份验证的支持,例如 Google

我使用AWSCognitoIdentityInteractiveAuthenticationDelegate / AWSCognitoIdentityPasswordAuthentication协议进行身份验证,这适用于我们的用户池身份验证。但是我看不到如何在此流程中实现 Google,因为完成需要 AWSCognitoIdentityPasswordAuthenticationDetails(username: **, password: **)对象来完成身份验证。

通过使用AWSGoogleSignInAWSSignInDelegate / onLogin进行Google 登录 poc以避免使用AWSAuthUI,因为我需要一个本地自定义 UI 至少用于用户名/密码 UI。但我真的不明白如何将它改造成当前的登录。

任何人都对如何最好地支持这两个功能以及使用哪个 AWS 框架有任何提示?如果不需要的话,我宁愿不重写我们当前的实现,但是我需要一个更通用的身份验证实现。

0 投票
0 回答
189 浏览

amazon-web-services - AWS Cognito 用户池联合:用户创建

设想

  • 我有一个应用程序,目前负责自己的用户配置文件。
  • 我正在将身份验证转移到外部身份提供者。
  • 身份提供者是一个企业解决方案,不能包含特定于应用程序的数据(例如用户是哪个帐户的成员以及他们拥有什么角色)
  • 该应用程序托管在 AWS 上,由多个微服务组成。

我需要为特定于应用程序的数据找到一个归宿

尝试的解决方案

我查看了Cognito User Pool Federate。我的计划是主要在用户池(我控制他们的组/属性/等)中创建和管理用户,然后启用从外部提供商的登录。

我的问题

此联合选项是否允许现有用户池用户通过外部身份提供者登录?

即他们存在于池中,然后他们登录(使用链接两者的映射)

如果是这样,用户池配置是什么样的?

如果没有,Cognito 中是否有任何机制可以在我的外部身份提供者和我的内部身份提供者之间实现这种“令牌交换”?关键是我需要能够在用户登录之前配置应用程序的用户版本。

B计划

我知道我始终可以将特定于应用程序的内容保存在内部数据库中并根据需要访问它。但是,我热衷于基于角色/组/等令牌。

更新

我不相信这个功能目前存在。我提出了一个要求它的功能请求

0 投票
2 回答
5023 浏览

amazon-web-services - 多个条件下的 aws 身份池过滤器列表用户 api

有没有办法在多个条件下过滤列表用户 api 的结果。我想从列表中获取所有拥有用户名的用户的列表

上面的代码只返回一个用户名。现在,如果我想为多个用户名获取相同的信息,我似乎无法找到一种方法。

前任:

0 投票
2 回答
977 浏览

amazon-web-services - 从 AWS CLI 创建和配置 Cognito 用户池

我目前正在尝试通过 AWS-CLI 上的 bash 脚本自动化 Cognito 用户池创建过程。但是,按照 AWS 控制台中的步骤,我尝试通过 CLI 重现相同的步骤。我想知道我应该查看哪些命令以及按什么顺序查看?AWS 文档并没有说太多,而且这些命令有时会让人感到困惑。

任何想法将不胜感激。

干杯! 尼亚

0 投票
0 回答
66 浏览

ios - 如何在 AWS Userpool iOS 中一次只登录一台设备?

我有一个应用程序,用户可以在其中使用手机号码和 OTP 登录/注册。我已将 AWS UserPool 用于此功能。

但我希望一次只有一个用户可以登录。

假设在设备 1 用户使用手机号码登录:+9197XXX XXXXX 那么如果在设备 2 用户使用相同手机号码登录:+9197XXX XXXXX

然后应该自动注销第一个设备。

我应该如何在 AWS Userpool 中实现这一点?

0 投票
1 回答
287 浏览

amazon-cognito - 身份提供商的 AWS Cognito 最佳实践

我有一个中途运行的应用程序,用户可以通过表单或 Facebook 注册。

我正在尝试执行以下操作,我想知道这是否符合 AWS Cognito 最佳实践。

报名:

  • 注册表单(“本地用户”):用户可以输入用户名/密码以及详细信息(性别、生日等)。凭证存储在 AWS Cognito 用户池和自定义数据库中的所有其他配置文件详细信息中。
  • 通过 Facebook 注册:用户可以点击页面上的 Facebook 登录按钮,在他通过身份验证后,如果 FB 没有提供,他必须填写缺失的信息(性别、生日等)。个人资料信息将存储在与通过表单注册的用户相同的数据库中。

游泳池:

  • AWS 用户池作为身份提供商连接到我的 AWS 身份池中。
  • Facebook 连接到同一个身份池。

令牌处理:

  • “本地用户”:我根据用户池中的 identityId 从身份池中获取凭据。我使用此凭证访问 AWS 上的资源。凭据将缓存在客户端的安全位置。
  • Facebook 用户:与“本地用户”相同的程序。

我的问题:

  • 整体方法是否有意义,或者是否存在与 AWS Cognito 的设计不一致的地方?
  • 我将所有个人资料信息(“本地用户”和 Facebook 用户)保存在自己的数据库中,因为我需要对个人资料信息进行更高级的查询/搜索功能。Cognito 不提供复杂的搜索功能。如果我分别与用户池分开,这是一种不好的做法吗?用户池只存储本地用户的用户名/密码?这种方法的缺点是什么?
  • 我应该在用户池中为每个 Facebook 身份创建一个用户吗?如果是,为什么?
0 投票
1 回答
189 浏览

amazon-web-services - 在 API Gateway 中基于 cognito 身份池身份查找 cognito userpool uset

我是 AWS 新手,所以请放轻松 :) 我已经设置了一个概念证明来证明由 lambda 支持的经过身份验证的 API 以及以下组件。

API Gateway -> 由 AWS Cognito UserPool 支持的 Lambda 联合身份支持我在 API 网关中设置了授权方,以使用联合身份池提供的 IAM 角色。

我可以从https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference看到身份 ( ap-southeast-2:<GUID>) 进入网关(在我的集成请求映射模板中使用它) .html#context-variable-reference"$context.identity.cognitoIdentityId"

我如何从网关或 lambda 解析'ap-southeast-2:<GUID>'回驻留在用户池中的源身份。(例如从中提取自定义属性之一)

其他相关信息,我正在使用 Amplify-AWS 来调用 API 网关的客户端。

TIA。

0 投票
1 回答
1822 浏览

android - AWS Cognito 身份池登录和持久性

主要目标

通过在 Android 应用程序中使用 Cognito 用户池和 Cognito 联合身份来保持登录。应用程序应该处理令牌的刷新(通过 sdk?)。电子邮件用作用户名。在整个应用程序中只允许 1 个唯一的用户名(电子邮件)。示例:如果用户使用电子邮件/用户名test@gmail.com登录 Facebook ,他们应该无法通过test@gmail.com的用户池注册用户。

设置

我有一个身份池,我的身份验证提供者是我的 Cognito 用户池、Facebook 和 Google。我正在使用 Facebook 和 Google 的原生 SDK 登录。

我有一个 SplashScreenActivity 来检查用户是否已登录并相应地重定向它们(LoginActivity 或 MainActivity)

currentUser.getSession(authenticationHandler)如果通过用户池登录,使用我的用户池就可以了。

第一次

  • 未登录
  • AuthenticationHandler:getAuthenticationDetails:userId 为空
  • 显示登录活动

登录

  • 通过用户池登录
  • 成功 -> MainActivity

重启应用

  • AuthenticationHandler:onSuccess
  • 显示 MainActivity

如果我通过 facebook 登录并通过CognitoCachingCredentialsProvider它设置我的登录信息,它不会更新currentUser,所以我的getSession()电话不起作用。但是,我所能做的就是调用getCachedIdentityId(). 我的不会CognitoCachingCredentialsProvider过期吗?

此外,如果我使用从用户池创建的用户登录并注销 -currentUser.getUserId()使用我之前登录的用户池用户返回,但getCachedIdentityId()为空

问题

  • 由于我正在使用用户池、facebook 和 google 处理本机登录 - 我是否必须手动管理访问令牌和刷新令牌?或者可以CognitoCachingCredentialsProvider帮我处理吗?
  • 我可以登录用户(通过用户池、facebook 或 google)并让他们保持登录状态吗?我该如何检查?
  • 当用户通过 facebook/google 登录时,我可以在我的用户池中本地创建用户吗

最后的咆哮

如果您曾经使用过 Firebase Auth - 这就是我希望应用程序发挥作用的方式!使用 Firebase 用户、Facebook 登录和 Google 登录来设置 Firebase Auth 非常容易。

  • 使用身份提供者登录
  • 将令牌传递给 Firebase
  • 获取 Firebase 用户
  • 完毕。

想要退出?firebaseUser.logout()。就那么简单。

代码

闪屏活动

登录活动

我自己处理每个登录场景(用户池、Facebook、谷歌)

0 投票
2 回答
1717 浏览

amazon-web-services - AWS CloudFormation 脚本失败 - 不允许 Cognito 使用您的电子邮件身份

我正在尝试构建一个 CloudFormation 脚本来设置 Cognito 用户池并将其配置为使用自定义电子邮件在注册过程中向用户发送其验证代码(即 FROM:noreply@mydomain.com)。

执行 AWS CloudFormation 脚本时出现此错误:

我附上了 Cognito 使用我的 SES 电子邮件身份的政策,例如 noreply@mydomain.com。在运行 CloudFormation 脚本之前,我已在 SES 中手动设置并验证了此电子邮件身份。

这是我的 CloudFormation 策略配置,允许 Cognito 代表我发送电子邮件,例如来自 noreply@mydomain.com:

我不确定我在这里做错了什么......