问题标签 [aws-cognito]

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 投票
3 回答
16302 浏览

amazon-web-services - 我在哪里可以从 cognito 找到 JWT 的密钥

我正在为我的 Web 应用程序尝试 Cognito 用户池的登录功能。我能够获得令牌,但我不确定在哪里可以找到解码它的秘密。我在其中一篇文章中读到秘密是用户池中应用程序的秘密 ID。但是,对于 Javascript SDK,秘密 ID 是空白的。这是否意味着我的秘密也应该是空白的?我试过这个,但我收到一条消息,上面写着“错误:PEM_read_bio_PUBKEY 失败”。

0 投票
1 回答
687 浏览

amazon-web-services - 用户注册时发送电子邮件 - AWS Cognito 联合身份

新用户注册时如何发送电子邮件/触发 lambda 函数?

在“编辑身份池”下,我只找到了一个同步触发器。如果我理解正确:每次用户同步他的数据时都会触发这个......
有没有办法只为“初始”同步或为用户创建某个数据集时触发 lambda 函数?

在此处输入图像描述

编辑:
更具体地说:我确实使用 JS SDK 通过 lambdas 创建用户。我将开发人员身份验证与我自己的 oauth2 流程一起使用。我不知道如何区分第一次通过谷歌授予访问权限的用户与第二次这样做的人。带有访问代码的json对我来说是一样的……也许我弄错了。

同样使用该getOpenIdTokenForDeveloperIdentity调用,我不知道如何区分 cognito 的新 ID 和一个 cognito 已经知道的 ID。

编辑2:更准确地说:我正在建立这个项目:https ://github.com/laardee/serverless-authentication-boilerplate/blob/master/authentication/lib/storage/usersStorage.js

这是我目前如何将用户保存到 cognito 的方法。我确实为第一次用户和第 n 次用户运行此代码。我的问题是我不知道如何区分......

0 投票
1 回答
139 浏览

ruby-on-rails - 使用电子邮件/电话而不是用户名来验证用户

我正在使用Congnito用户池来存储我的应用程序用户。我可以使用username和登录password。对于我的网络应用程序,我要求用户能够根据email/phone自己的意愿使用身份验证自己。并且两者都email可以phone number同时存在。我做了一些RnD,发现我需要编写一些lambda函数来实现它,有没有其他方法可以实现它,对于lamda函数请帮助我编写它。

我正在使用 Ruby on rails 5 来构建我的 Web 应用程序和aws-sdkgem。

感谢帮助。

0 投票
0 回答
164 浏览

javascript - 如何将 AWS 访问凭证从 JavaSCript 传递给 PHP?

我有一个 JavaScript 来使用 Cognito 联合服务对用户进行身份验证。

我能够对用户进行身份验证并获得访问凭据:

我应该如何将这些凭据传递给 PHP file.function ?我应该在 URL 本身中传递它们吗?

0 投票
0 回答
188 浏览

amazon-web-services - AWS Javascript SDK 未连接到 cognito

我正在做一个非常简单的测试用例,使用 AWS javascript SDK 连接到 Cognito。我在 Cognito AWS 中设置了一个接受未经身份验证的用户的用户池。然后我有一个使用 SDK 连接到它的 HTML 页面。这部分实际上是在与池相关联的 AWS 的“示例代码”部分之外:

然后这部分来自他们的文档,应该获取临时凭据:

当我加载网页时,我在尝试检索凭据时收到第二部分的错误。Safari 显示“发生 SSL 错误,无法与服务器建立安全连接”。Chrome 显示“net::ERR_CONNECTION_RESET”。

我是否忘记了一些简单明了的配置步骤?将角色 arn 或 my accountid 添加到配置步骤没有帮助。

0 投票
3 回答
6321 浏览

amazon-web-services - 如何在 Cognito Federated Identities 中访问用户的电子邮件地址?

我正在尝试建立一个基本网站(AWS 上的无服务器),允许访问者使用 Google 和/或 Facebook 登录。目前我正计划将 S3、Cognito 与 Federated Identities、API Gateway、Lambda (NodeJS) 和 DynamoDB 一起使用。客户端应用程序将使用 Angular。

我使用 Google 和 Facebook 进行社交登录,目前我在用户第一次登录时在“用户”表中插入一行,其中包括 cognitoId、姓名、个人资料图片 URL 等。

我还认为将用户的信息以他们的电子邮件地址作为密钥来存储是一个很好的设计,而不是像 cognitoId 这样的东西,这样用户就可以使用不同的提供者登录并查看相同的数据。所以我需要知道经过身份验证的用户的电子邮件地址,但我认为它应该来自 Cognito,而不是直接来自用户(因为不应信任客户端应用程序)。

我相信 Cognito 正在存储用户的电子邮件地址,因为我已在用户池中根据需要启用了该字段。

我遇到的问题是我找不到有关如何从 Cognito 获取用户电子邮件地址的任何信息。

我最接近的是这篇文章,但我在任何地方都找不到访问令牌:How to get user attributes (username, email, etc.) using cognito identity id

这篇文章表明我可能能够使用 GetUser,但我再次不知道 AccessToken 来自哪里:create user using AWS cognito identity

如果我确实需要使用 GetUser 和 AccessToken,它来自哪里,我如何生成它?它来自客户端,还是我可以使用 AWS.config.credentials 在 Lambda 中获取它?

我一直在尝试解决这个问题一段时间,我觉得我错过了一些非常简单的东西!

0 投票
1 回答
248 浏览

ruby-on-rails - Aws::CognitoIdentity::Errors::NotAuthorizedException 异常:登录令牌无效

我正在使用 a Rails application,并且正在使用amazon cognitofor single sign on,我创建了一个链接到我的用户池的身份提供者,现在我正在尝试使用docidentity_id中所述的代码从我的 cognito 身份中获取

我收到此错误:

Aws::CognitoIdentity::Errors::NotAuthorizedException 异常:登录令牌无效

我不知道我做错了什么。

请帮忙

0 投票
1 回答
408 浏览

authentication - AWS Cognito 移动中心

我需要通过 Instagram 为我的移动应用程序登录用户,以便我可以调用 Instagram API 并从 Instagram 获取一些信息。简单地说,我的应用程序将要求用户授权 Instagram 访问并能够获取 API 调用的访问令牌。一旦用户被授权,应用程序不应要求用户再次登录。我已经设置了我的 Instagram 客户端应用程序来实现服务器端身份验证流程。

我的挑战是我想通过使用 AWS 移动服务来做到这一点。我已经从 MobileHub 设置了自定义身份验证,并且需要定义自定义身份验证流程(在本例中是Instagram 身份验证流动)。在 AWS Cognito 应用程序下,当我转到 Triggers 选项卡时,我看到了用于定义与我的身份验证相关联的 lambda 函数的不同选项(例如 pre/post auth 或 define/create/verify auth challenge)。我不确定如何使 Instagram 身份验证流程与这些功能保持一致。或者我应该使用别的东西。此外,我不清楚 AWS Cognito 如何管理身份验证流程:我不希望我的用户每次启动我的应用程序时都经过授权过程。我相信 AWS Cognito 将用户从我的自定义流程链接到某个 Cognito 身份,并且能够在他们使用我的应用程序时进行身份验证。我非常感谢任何建议,甚至是代码示例(如果有)。

0 投票
2 回答
866 浏览

ios - API Gateway generated SDK for iOS (Objective-C) with Cognito User Pool for authorized users

I have deployed an API using AWS API Gateway and I am trying to access it through an iOS device. Some endpoints support unauthorized users and I have no trouble accessing them but others don't and I can't manage to query them. I use the new Cognito User Pool feature for authentication which works fine when using a web application (or postman).

First, even though some of the endpoints are protected (like in the following picture of the console), when I deploy the API and generate the SDK for iOS (Objective-C), I can read in the README file: "All endpoints do not require authorization."

enter image description here

Then, when I run the following authentication code from AWS documentation, everything seems to work just fine:

I implemented CognitoPoolIdentityProvider as specified in this post.

I manage to get a proper token (tested using postman) and a user id:

2016-12-27 12:43:35.760 AskHub[26625:10037234] AWSiOSSDK v2.4.11 [Debug] AWSURLResponseSerialization.m line:63 | -[AWSJSONResponseSerializer responseObjectForResponse:originalRequest:currentRequest:data:error:] | Response body: {"IdentityId":"eu-west-1:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"} 2016-12-27 12:43:35.766 AskHub[26625:10037234] Identity id: eu-west-1:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

However, when I run the following code to hit a protected endpoint, CloudFront considers that I am not authenticated.

Reponse:

2016-12-27 12:56:25.247 AskHub[26784:10046562] Could not send initial request: Error Domain=com.amazonaws.AWSAPIGatewayErrorDomain Code=1 "(null)" UserInfo={HTTPBody={ message = Unauthorized; }, HTTPHeaderFields={type = immutable dict, count = 9, entries => 3 : Via = {contents = "X.X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.cloudfront.net (CloudFront)"} 4 : x-amzn-ErrorType = {contents = "UnauthorizedException"} 5 : Content-Type = {contents = "application/json"} 6 : Content-Length = {contents = "27"} 7 : Connection = {contents = "keep-alive"} 8 : x-amzn-RequestId = {contents = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"} 9 : Date = {contents = "Tue, 27 Dec 2016 11:56:25 GMT"} 10 : X-Cache = {contents = "Error from cloudfront"} 11 : X-Amz-Cf-Id = {contents = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} } }

Am I missing something here? Does the automatically generated SDK support User Pool authentication?

0 投票
1 回答
4839 浏览

amazon-web-services - 如何在 node.js AWS Lambda 中获取经过身份验证的用户的电子邮件地址?

我有一个使用 AWS javascript SDK 的 Angular 应用程序,并且可以使用 Facebook 和 Google 成功登录。我能够创建 Cognito 身份,并且在我的联合身份池中看到了该身份。我还可以使用经过 IAM 身份验证的 API 端点(我在调用的 Lambda 中看到了用户的 cognitoId)。

我想使用用户的电子邮件地址作为数据库(DynamoDB)中的密钥,因此我试图弄清楚如何从可信来源(Cognito(首选)或身份验证提供者的 JWT)访问用户的电子邮件地址。

访问用户电子邮件地址的最佳方式是什么?

更新:在客户端(javascript)我使用联合身份与谷歌和 Facebook 令牌。社交登录正在运行,我可以通过 Cognito 进行身份验证,通过登录:

然后我做AWS.config.credentials.get()了,我可以得到类似的东西AWS.config.credentials.identityId,但我找不到 accessToken 或调用来获取 JWT 的方法。我想我需要打电话result.getAccessToken().getJwtToken(),但我找不到。

他们获得 accessToken 的所有示例似乎都使用.authenticateUser(authenticationDetails())了 ,但详细信息包括用户名和密码(不是联合登录)。