问题标签 [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 投票
1 回答
473 浏览

amazon-web-services - 如何使用 boto3 识别 cognito id 属于池?

使用下面的代码,我得到了OpenID token一个IdentityId.

但我有两个IdentityPoolId,所以我需要确定IdentityPoolId一个给定的合适的IdentityId
使用 boto3 库我如何识别一个是否IdentityId属于一个IdentityPoolId

0 投票
1 回答
631 浏览

amazon-web-services - 使用来自用户池的 SAML 身份验证的令牌响应来检索 AWS 临时访问密钥

如何使用来自用户池的 SAML 身份验证的令牌响应来检索 AWS 临时访问密钥并进行 API 网关调用?

我已经配置了一个带有关联应用程序客户端的 Cognito 用户池。我已将 Okta 配置为第 3 方 SAML 身份提供程序。使用亚马逊托管的登录https://[cognito domain name]/login?response_type=token&client_id=[your App client id]&redirect_uri=[your App client redirect URL],我可以重定向到我的 ReactJS 应用程序,并#access_token在标题中添加。

我现在正在尝试使用#access_token调用 API 网关。我一直在关注本指南以及 aws-amplify。据我了解,我需要使用#access_token获取 AWS 访问密钥来调用 API 网关。

我正在尝试使用以下代码执行此操作:

但不确定这如何与 aws-amplify 集成,而且我还没有成功检索 AWS 临时访问密钥来进行 API Gateway 调用。

我以前使用 Cognito 用户池中的用户进行这项工作,但现在我需要将 Okta 作为身份提供者。

0 投票
4 回答
3337 浏览

amazon-web-services - Cognito 保存用户池中的更改不起作用

我们正在使用 cognito 用户池进行身份验证,并且我在MFA 和验证下启用了电子邮件验证,所以一段时间后我尝试通过取消选中电子邮件复选框来删除该验证,我总是收到错误您的角色仍在创建中。请稍候再试。我等了一周,问题仍然存在。我只需要取消选中电子邮件验证。先感谢您。

0 投票
1 回答
782 浏览

android - 向 AWS 用户池验证社交身份联合用户?- 安卓

我们已将com.amazonaws:aws-android-sdk-cognitoidentityprovider:2.6.8SDK 用于基于用户名和密码的登录和注册流程。按照这里提到的方法https://docs.aws.amazon.com/cognito/latest/developerguide/tutorial-integrating-user-pools-android.html。注册和登录过程按要求工作。

对于通过联合身份验证的 Facebook 和 Google,我们不想为此目的使用托管 UI,并且不使用联合身份。我们已经关注了这个链接https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-identity-federation.html

  1. 我们已经使用应用程序客户端和用户池域设置了用户池。
  2. 将 Facebook 设置为社交身份提供者。
  3. 向移动设备添加了 android 回调 URL。

第一种方法

我们查看 CognitoSyncDemo 示例应用程序,它使用联合身份,因此我们不得不丢弃它。我们只是在用户池中使用联邦。

第二种方法

我们使用了 webview 并加载了以下 URL。该 URL 将我直接带到 Facebook,经过身份验证后,它返回给我以使用 access_token、auth_type、expires in 和 id_token 重定向 URL。但没有刷新令牌。网址https://yourdomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?redirect_uri=redirect_app_path&response_type=code&client_id="client_id"&identity_provider=Facebook

但是使用这种方法存在问题。我找不到将访问令牌推送到管理用户会话的 SDK 中的 cognitoUserSession 的方法。因此,每次我注册 Facebook(使用 webview)时,SDK 中都没有会话维护。因此,我再次被重定向到登录视图。如何确保 Facebook 用户通过 cognitoidentityprovider 的身份验证和登录?获取access_token和id_token时如何在SDK中创建用户会话?

第三种方法

我们尝试使用 Cognito Auth 演示https://github.com/awslabs/aws-sdk-android-samples/tree/master/AmazonCognitoAuthDemo。为此,我们必须添加另一个库com.amazonaws:aws-android-sdk-cognitoauth. 单击登录后,它曾经将我们带到hosted-ui。在研究了类似的 IOS 项目后,我们对 android 库项目(com.amazonaws:aws-android-sdk-cognitoauth for android)进行了调整。我们在 URI 中添加了 identity_provider 以进行登录。然后它将我们直接带到 Chrome 选项卡上的 Facebook。身份验证后,它在我们的应用程序中设置会话。但它有自己的身份验证对象,即 AuthSession,但之前我们使用 CogintoUserSession 进行正常注册。AuthSession 没有用户属性,也不提供任何获取用户详细信息或身份验证处理程序。如果我们使用这种方法,那么如何将 AuthSession 与 CognitoUserSession 链接并在应用程序中管理用户会话?

概括

简而言之,我们已经厌倦了 AWS 示例,它正在将我们带到基于 Web 的托管 UI。我们需要仅使用联合身份提供者通过 Facebook 向用户池验证用户身份。我们需要在 Cognito SDK 中维护会话,而不影响我们基于用户名和密码的登录流程。我们希望在单击按钮时直接打开 Facebook 或在应用程序中的 webview 上打开 Facebook,验证用户并仅使用 Cognito SDK 在应用程序中维护会话。

0 投票
1 回答
953 浏览

amazon-web-services - AWS Cognito 中 SigningCertificate 的用途是什么

我正在使用 AWS Cognito 进行用户身份验证。

我想知道 AWS cognito 中 SigningCertificate 的实际使用情况

我们可以使用这个GetSigningCertificate API 来获取 AWS Cognito 的 SigningCertificate。

我们在 API 中传递UserPoolID,它为我们提供了一些加密数据。

SigningCertificate 的示例输出(只是虚拟数据):

ASKJDHKAJSHDKJASHDKASHDKLAHLKSJDHKJASHDKASHKJDHALK2s3UTJGVHRiTTAeFw0xODA1MDMxMjE0NTlaFw0yODA1MDMxMjE0NTlaMB4xHDAaBgNVBAMME3VzLXdlc3QtMl9rN1EyRlR0Yk0wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCj2aobYwWkzAQaIocV5IVblGKjDS30Iid5h0b9w8z309LcPcj6xCqTW9D0LYih7XpE6H7skaxymNhi7ITiJun+tC+JpuVb54pKFLwkiArRlqHK2rlI5+4NJQ5NzaEGGmilPU/ASASDJLKASjoaisdfosdf=

0 投票
0 回答
777 浏览

android - 如何从身份提供者会话中获取 Cognito 用户池 jwt 令牌

我正在使用 AWS Android 开发工具包。

我有一个 API Gateway 资源,可以通过“Authorization COGNITO_USER_POOLS”进行访问。我有一个用户池,我能够:

  • 提供用户名和密码以获取 JWT 令牌
  • 使用“Authorization”标头中的 JWT 令牌访问 API Gateway 资源。

现在我想使用外部 OpenID Connect 提供程序将用户添加到池中。
身份提供者在用户池的“联合”部分设置。
我能够登录到外部提供程序 (Keycloak) 以获取 JWT 令牌,但我找不到将这个令牌与 Cognito 用户池 JWT 令牌交换以访问 API 的方法

我只能使用 CognitoCachingCredentialsProvider 来获取 AWS AccessKey 和 SecretKey。

我错过了什么吗?

0 投票
2 回答
564 浏览

swift - AWS Mobile Hub 声明用户在自定义 UI 用户池登录/身份验证后未登录

我目前正在将 AWS Mobile Hub 用于使用 Cognito 和 Cloud Logic 的 iOS 应用程序。

我决定替换默认的 AuthUIViewController,因为我不喜欢它的外观。我使用这个示例项目来帮助我通过用户池实现注册:https ://github.com/awslabs/aws-sdk-ios-samples/tree/master/CognitoYourUserPools-Sample/Swift 。

这是我的实现:

从我的 AppDelegate 开始,我将要登录的 UserPool 设置为一个通常可访问的常量变量。我对为什么 AWSMobileClient 认为我的用户没有登录的一个想法是因为它定义了自己的服务配置/池,但我不确定:

AppDelegate 完成后,应用程序转到其名为 InitialViewController 的根视图控制器。在这里,我允许用户单击 facebook 登录或常规(用户池)登录。

如您所见,这些函数完成了它们的工作,并且用户根据 (Constants.AWS.user?.isSignedIn) 成功登录,并且我能够成功检索用户详细信息。但是,当我询问 AWSSignInManager 或 UserPoolsSignInProvider 我的用户是否已登录时,它返回 false。这是一个问题,因为没有 AWSMobileHub 看到我的用户已登录,我无法访问我的云逻辑功能等。

有人可以帮助我了解如何通知 MobileHub 和登录管理器我的用户已登录到用户池,以便我的应用程序可以正常工作吗?

谢谢你!

0 投票
2 回答
3008 浏览

amazon-web-services - AWS Cognito - 用户丢失了“非可变”属性“email_verified”

在使用 Cognito 几个月后,用户池中的一些用户现在丢失了“email_verified”属性。我无法理解它是如何丢失或如何恢复的。

症状是:

  • 用户仍然可以登录
  • 用户密码无法更改(例如,通过JS SDK - changePassword),产生错误:“x-amzn-errormessage:无法为用户重置密码,因为没有注册/验证的电子邮件或电话号码”
  • 使用list-users CLI获取用户的用户属性显示缺少该属性

    与一个具有适当属性的

    /li>

如果我尝试删除该属性(具有足够的权限),它会失败 - 正如人们所期望的那样 - 解释它不是可变的。

0 投票
0 回答
311 浏览

amazon-web-services - 将确认密码字段添加到默认 Cognito UI

我有一个 Cognito 用户池实例,我需要在 Hosted Ui 的注册表单中添加一个确认密码字段。但是,我不能在用户池配置中的任何地方指定它。有谁知道如何添加确认密码字段?

(注意:我不想编写自己的自定义登录,我想使用 Cognito 的 Hosted UI)

0 投票
1 回答
1118 浏览

vue.js - AWS Cognito UI 在调用回调页面时使用哈希来包含参数

我在使用 AWS Cognito 提供的 UI 时遇到问题。

当我尝试使用提供的 UI 时,我使用填充的 URL 调用端点:

https://mydomain.auth.ap-northeast-1.amazoncognito.com/login?response_type=token&client_id=123456789&redirect_uri=http://localhost:3000/callback/

现在的问题是,在身份验证之后,Cognito 使用 # 来发回所需的参数。结果将如下所示:

http://localhost:3000/callback/#id_token=eyJragIsm2PqVpw&access_token=eyJraWQiOiJ&expires_in=3600&token_type=Bearer

我很难在回调页面(这是一个 vue 应用程序)中阅读 id_token 和 access_token 。

如何将 Cognito 配置为使用通常的问号 (?) 来传递查询字符串,或者,如何在哈希 (#) 之后读取传递的参数。

我很欣赏你对此的建议。