问题标签 [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.
amazon-web-services - serverless.yml 如何在 Cognito Lambda Config 中引用 lambda 函数
我对无服务器很陌生,我正在尝试从无服务器 yaml 文件为 Cognito 设置自定义挑战。我有以下功能
functions:
t-challenge-define:
handler: t-auth-challenge.define
t-challenge-create:
handler: t-auth-challenge.create
t-challenge-response:
handler: t-auth-challenge.verifyResponse
resources:
Resources:
CognitoUserPool:
Type: AWS::Cognito::UserPool
Properties:
UserPoolName: my_user_pool_name
MfaConfiguration: "OFF"
UsernameAttributes:
- phone_number
Schema:
- Name: phone_number
AttributeDataType: String
Mutable: false
Required: true
- Name: locale
AttributeDataType: String
Mutable: true
Required: true
LambdaConfig:
DefineAuthChallenge: (how do i reference func here)
amazon-web-services - AWS Cognito 自定义身份验证 - 将元数据发送到挑战 lambda 函数
我正在开发一个自定义无密码身份验证来登录 Cognito 用户池。我将描述我正在尝试实现的内容,以防万一有什么愚蠢的。我希望用户输入他们的电子邮件地址,然后通过电子邮件收到一个神奇的登录链接,当他们点击该链接时,将被带回网站并登录。
这使用自定义身份验证 lambda 函数来定义/创建具有基于时间的密码的质询,并将其通过电子邮件发送给用户。我有几个问题:
问题 1)
当用户返回代码时,他们可能不在同一个浏览器/设备中,当然也不会在同一个选项卡中,因此他们没有会话,这意味着我需要再次调用 cognitoUser.initiateAuth。这将再次通过定义/创建挑战 lambdas,因此即使此时用户来自电子邮件链接,因此已经发送了第二封电子邮件。注意:创建挑战时,会话 id 在事件对象中不可用,而且我仅在最后 3 分钟内阅读了这些会话,而基于时间的密码将持续约 15 分钟,所以我认为我不能包含会话电子邮件中的 ID。
问题2)
您可以从几个地方(浏览器、android 应用程序等)登录,我希望能够将 url 或至少包含协议作为参数来控制电子邮件中发送的内容,例如,如果您在android 应用程序,那么您收到的电子邮件将是 myapp://login?code=xxx,如果您是在网络上完成的,它将是https://example.com/login?code=xxx
如果我能找到某种方法将自定义元数据发送到 DefineChallenge 和 CreateChallenge lambda,这样它就会出现在事件对象中,我似乎就能够实现这两者以正常工作。我认为将 ValidationData 添加到 AuthenticationDetails 对象可以做到这一点,但该信息不会出现在 Lambda fns 的事件对象中。
我发现的解决方法是为每种情况创建一个新的客户端 ID - 一个用于启动身份验证,一个用于兑换令牌,并为每个不同的协议重复。但这很快就会有很多客户 ID - 维护起来很痛苦而且很笨拙。
所以 tl;dr 是:我想在 JS 中从我的 cognitoUser.initiateAuth(...) 调用发送自定义元数据,并让它在我的定义/创建挑战 lambda fns 中可用。
amazon-web-services - 如何为特定 Cognito 身份的 SQS 队列创建 IAM 策略
我正在尝试创建要应用于 SQS 队列的 IAM 策略。该策略应将对队列的访问限制为单个 Cognito 联合身份。
我从亚马逊找到了这个关于如何实现这一点的参考,但是在将策略应用到 SQS 队列时遇到了问题。
这是我要申请的政策。
用于编辑策略的在线 UI 显示在审核屏幕中:
一旦我按下应用,就会出现以下错误:
我不确定政策出了什么问题。我正在寻找任何帮助来修复策略或实现将 SQS 队列限制为单个 Cognito 身份的不同策略。
python - AWS Cognito / React 前端 / Django Rest 后端的最佳模式
努力让这个完全正常工作 - 这是我的应用程序工作流程:
React 前端 - 用户直接使用 Cognito 进行身份验证(使用 AWS Amplify) - 我的工作正常。前端需要处理这个问题,因为它对其他 AWS 服务进行单独的直接调用。
DRF 后端 - React 然后使用 Amplify.API 对 DRF 端点进行 API 调用,其中包括请求标头中的 x-amz-security-token(这似乎是 Amplify 调用 cognito-idp 服务返回的会话令牌)。所以现在后端有会话令牌(但没有访问令牌或刷新令牌)
然后,后端只需验证前端用户(我假设其经过身份验证的身份由会话令牌表示)是根据 Cognito 的有效且当前经过身份验证的用户。所以后端需要单独调用 Cognito 来验证这一点。
这是我失败的地方 - 我查看了 django-warrant,但我无法从文档中辨别这是否适合我的用例(甚至如何真正使用它 - 建议的默认设置会导致各种boto3 错误,缺少凭据等)。我还查看了保证,并直接查看了 boto3 和 botocore,但我不清楚在哪里使这一切发生。我是否错过了在这些库中看到某种 is_user_valid 和 is_session_token_valid 方法?
如果有人知道如何使用 django-warrant 直接执行此操作,它会有所帮助,如果不是关于最佳前进方式的一点建议,也将不胜感激(我是否编写自己的身份验证支持或中间件来拦截请求,以某种方式进行身份验证 w / boto3 或 botocore,还是什么?)
非常感谢
ios - AWS Cognito 登录,无响应
我不想使用 AWSCognito UI,因此我在 GitHub 上找到了一些关于登录独立于 UI 的工作。但是,当我实施它时,没有响应,也没有任何反应。
代码:
filebeat - 来自 filebeat 的 Cognito 身份验证
我使用此博客为 AWS Kibana 添加了安全性。Kibana 现在是安全的,我必须使用用户池中的用户登录。但是现在 filebeat 不能再写入弹性搜索端点了。我尝试将用户名和密码添加到 filebeat 配置,但我仍然得到Failed to connect: 403 Forbidden。如果我删除 Cognito 身份验证 filebeat 可以再次写入。
对此的任何帮助将不胜感激
authentication - 自定义 Web 应用程序中的 AWS Cognito 社交提供商
我正在尝试将身份验证集成到我的 Web 应用程序中。
按照Cognito
文档,我已经成功地创建了一个具有用户名和密码身份验证以及 facebook 提供程序的服务。
一遍又一遍地阅读文档,我无法在自定义网页中找到社交提供者身份验证的示例。
似乎只有他们托管的网页与这些服务集成。
如何集成Cognito
到自定义 Web 应用程序中?
我想使用用户名 + 密码和 Facebook 身份验证创建一个不同的页面(无法从有限的托管 UI 自定义它)。
jmeter - 如何为 AWS cognito 登录编写 Jmeter 脚本
我正在尝试创建 jmeter 脚本以登录 iphone 本机应用程序。应用程序正在使用 cognito 对用户进行身份验证。作为应用程序第一页的响应,我得到了 SALT 和 Secret 块。我在下一个请求中传递了这个秘密块和其他必需的参数,但是我收到错误消息,因为“用户名或密码正确”。
有没有人在类似的事情上成功地工作过可以帮助我的事情。
amazon-cognito - 使用 AWS Coginito 内置网页进行身份验证
我正在使用 AWS Cognito 内置网页构建身份验证。
(我正在使用 Cognito 用户池和身份池,没有任何其他提供者)
Cognito 网页返回给我一个令牌(idtoken),我把它放在了 cookie 中。
当我尝试使用此令牌获取凭据时,使用以下代码:
我收到此错误:
我怎么解决这个问题?
我是否错过了获取凭据之间的一些步骤?
可能是我想念 Cognito 配置中的某些东西吗?
react-native - AWS-Amplify:此身份池不支持未经身份验证的访问
我正在使用:https ://github.com/aws-amplify/amplify-js
是否有任何工作示例如何使用经过身份验证的 AWS 访问?我正在使用这个:
如果没问题(没问题):
但我不断得到:
[未处理的承诺拒绝:NotAuthorizedException:此身份池不支持未经身份验证的访问。]