问题标签 [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 - 使用 Cognito 对 AWS 上的用户进行身份验证,用于使用代码的无服务器 React Web 应用程序
所以这是我的场景,我有一个在 AWS 上使用无服务器架构开发的 Web 应用程序。我使用 S3 来托管我的静态内容,我的所有服务器端代码都在 Lambda 函数中实现并通过 API Gateway 访问。现在我正在尝试使用 Cognito 和用户池来实现身份验证层。
我一直按照此页面上的说明创建用户池。完成后,我可以通过在浏览器的地址栏中输入这样的 URL 来测试我的用户池:
重要的部分(对我来说)是response_type=code
根据相同的文档也可以是response_type=token
. 在这一点上,我不确定它们的区别是什么以及我应该如何在它们之间进行选择。
无论如何,打开上述 URL 将带您进入 AWS 默认登录表单。一旦用户成功通过身份验证,浏览器将被重定向到提供redirect_uri
的额外参数,如下所示/?code=12345678-1234-1234-1234-123456789012
。在这一点上,我想我应该提取code
(在客户端使用 Javascript)并将其传递给 API 网关并使用它来验证用户。但我不确定如何。我发现这个页面解释了令牌的步骤,但是代码呢?
android - 如何让 AWS Cognito 登录/注销以在 Android 上与 AWS API Gateway 一起正常工作?
我正在编写一个简单的 Android 应用程序,它目前提供以下功能:
- 使用电子邮件和密码注册/登录,针对AWS Cognito后端
- 注销(针对相同的 Cognito 后端)
- 在AWS API Gateway上调用受保护的 Web API
我正在构建自己非常简单的登录/注销 UI,而不是使用 AWS Cognito UI 库:
登录屏幕(左);登录画面(右)
当用户登录时,Web API 应返回 200(和正文),并在用户注销时返回 403 错误。服务器设置似乎都是正确的,iOS 上的等效应用程序按描述工作。
Android上的问题如下:
- 当我启动应用程序时,不要登录并调用 API:我收到 403 错误(预期)。
- 当我登录并再次调用 API 时:我仍然收到 403 错误(意外)。
- 当我关闭应用程序时,从最近的应用程序列表中滑动它,然后重新打开它:我仍然登录(预期)
- 现在,当我调用 API 时:我收到 200 响应(预期)。
如果我注销现在也会发生同样的情况:注销后我仍然收到 200 响应,直到我终止应用程序并重新启动它。
如何在不回收应用程序的情况下立即获得 API 网关调用以尊重我当前的身份验证状态?
我想知道是否应该归咎于 AWS API Gateway Android 库,所以我尝试了使用OkHttp的替代实现,但我得到了完全相同的结果。我的 Cognito 代码基于AmazonCognitoYourUserPools 演示。
这是我的 build.gradle 中导入 AWS 库的部分:
在此处粘贴大量代码可能无济于事,但我已经为所涉及的主要类创建了要点(删除了日志记录等,以使它们尽可能小且相关):
AwsInterceptor
中引用的类ApiCaller.java
来自这里。
authentication - 我可以使用 AWS Cognito 进行 Ejabberd 服务器身份验证吗?
对 Ejabberd 世界来说非常新。我正在尝试使用 ejabberd 了解身份验证。所以我有一个移动聊天应用程序,我通过 AWS Cognito 注册用户,现在我还必须将他们注册到 Ejabberd 服务器。
现在,有没有办法让我使用这个 Cognito 身份验证来注册/验证用户到我的 ejabberd 服务器?
或者应用程序身份验证和 ejabberd 身份验证是否应该分开处理,我必须首先通过 Cognito 注册,当注册成功时,我必须通过 ejabberd 的身份验证过程并创建一个与 cognito 用户无关的用户。
amazon-web-services - Cognito 注销不像记录的那样工作
我有一个配置了 SAML 身份提供程序 (ADFS) 的 Cognito 用户池,我可以将其作为联合用户 (AD) 进行签名,但注销不起作用。
按照文档,我向 https://my-domain.auth.us-west-2.amazoncognito.com/logout?client_id=63...ng&logout_uri=http:%2F%2Fyahoo.com发出 GET 请求(使用一些公共注销 uri),来自我的客户端(AngularJS 1.x 应用程序),我得到一个带有Location标头 的 302
(事实上,我看到了 2 个类似上面的请求)。
当我重新登录(通过 ADFS)时,它不会提示输入我的 AD 凭据,即似乎我没有注销。
我的用户池按照此处所述进行配置(请参见步骤 7),其中选中了启用 IdP 注销流程,这也应该将用户从 ADFS 中注销。
有什么建议么?谢谢。
amazon-web-services - 无法执行 HTTP 请求以使用 Postman 在 Cognito AWS 中注册新用户
我正在尝试手动请求邮递员注册。有一个带有标头的 POST 请求:
原始的身体看起来像这样:
我得到,在响应这个错误:
任何线索为什么我会收到此错误?
reactjs - 如何等待 aws cognito authenticateUser 调用(这似乎是一个回调)
所以我们正在使用等待/异步调用,但 aws-amplify 提供的 authenticateUser 命令似乎使用了回调。我是一个 python 编码器,很长一段时间没有用 node 编码,所以这可能是一个幼稚的问题!
我尝试将其转换为这样的承诺:
然后
但是,无论我如何调整它,代码都会继续运行,然后我得到一个未处理的承诺拒绝(在我的测试中,身份验证目前失败)
amazon-web-services - cognito 托管 UI 中的可选标识符不起作用
我一直在我的用户池上使用 SAML 身份联合,它有一个托管的登录页面。我配置了 Azure Active Directory 和 cognito 用户池,以便我可以使用 AD 用户登录。我以类似的方式添加了多个 SAML 提供程序,并且可以正常工作。当我使用Identifiers属性时出现问题,该属性用于通过从电子邮件中提取域名来登录到相应的 IDP。我遵循了这个文档。这就是它在 AWS 控制台中的外观。
现在,当我尝试使用 AD 用户电子邮件登录时,它给了我Login not allowed 错误。当我不使用此标识符可选参数时,它运行良好。
有人可以帮我解决这个问题吗?
amazon-web-services - AWS Cognito - 未收到确认代码
我使用 AWS Cognito 创建了一个用户池。它工作得很好,但许多电子邮件服务器(像 FreeTelecom 我们在法国的 Orange 这样的提供商)从未收到确认码(为了验证电子邮件地址并激活用户帐户)。我在 AWS 文档中一无所获。请问有人可以帮助我吗?
amazon-cognito - 仅用于多租户 SaaS 的身份和身份验证的 Cognito
我们运行一个多租户 SaaS 应用程序,其中组织有用户,并且组织彼此分离。
这个问题跟随这个线程,我已经消化了: https ://forums.aws.amazon.com/thread.jspa?messageID=819858
我们有这种情况,类似于上面的线程:
- 无限组织
- 每个组织的无限用户
- 无限的“客人”作为外部合作者
- 一个组织内的用户无法访问任何其他组织内的任何内容
考虑到上述线程中发布的限制,为每个组织内的无限组织和无限用户执行此操作的解决方案是什么?
我们只想使用 Cognito 来处理 SaaS 的注册和登录。我们不希望使用 API Gateway,因为我们已经在 API 实例后面使用了 ALB。
因此,我们的问题是身份和身份验证,而不是授权(例如权限、角色等)。
无限访客要求的原因是因为我们是一个应用程序,使用户能够与公司以外的其他人协作 - 请参阅 https://tallyfy.com了解上下文。
我对构建用户池、组和/或仅为此目的使用属性的最佳方法感到困惑。帮助表示赞赏。
示例解决方案 - 具有潜在数百万用户的单个用户池,其中用户的自定义属性是“organization_id”。此外,另一个自定义属性在两种类型中定义了他们的用户类型 - regular或guest。这是理想/可行的解决方案吗?