obj*_*y C 10 c# reverse-proxy http amazon-web-services amazon-cognito
我已经按照本教程成功设置了一个在 Localhost 上运行的 AWS Cognito 环境。
对于下一步,我将应用程序发布到我的外部 Web 服务器。我确认 Cognito 配置(即客户端 ID、元数据地址、区域等)是正确的。但是,当我访问并尝试登录新发布的公共站点时,我收到以下错误:“客户端未启用 OAuth2.0 流。”
编辑:
这是我的应用程序客户端设置
我需要有关我应该在 AWS Cognito 配置或服务器配置设置中查看的内容的帮助。服务器没有使用负载平衡器。我相信问题可能出在反向代理或 HTTPS 设置中。
hak*_*shi 32
当您使用 Cloudformation 或 AWS SAM 设置 Cognito,并且忘记将AllowedOAuthFlowsUserPoolClient属性启用为 true 时,也会发生这种情况。
Resources:
FooBarUserPoolClient:
Type: AWS::Cognito::UserPoolClient
Properties:
AllowedOAuthFlowsUserPoolClient: True # Set here
Run Code Online (Sandbox Code Playgroud)
cal*_*llo 25
我以前见过这个问题。向 Cognito 发出请求时,请仔细查看您指定的重定向 URL/回调 URL。如果我没记错的话,根据您在应用程序客户端设置中指定的内容,如果重定向 URL 中有尾随的“/”或缺少“/”,我已经看到了这个问题。
小智 16
我了解 OP 并未要求使用 terraform 来解决此问题,但它可能会对将来使用terraform创建 cognito 用户池客户端的人有所帮助。如果您像我一样在使用 terraform 时遇到此问题,请确保设置allowed_oauth_flows_user_pool_client为 true。例如,像这样:
resource "aws_cognito_user_pool_client" "client" {
name = "<your user pool client name>"
...
allowed_oauth_flows_user_pool_client = true
}
Run Code Online (Sandbox Code Playgroud)
这是用于创建用户池客户端的 terraform 文档的链接。
这是AWS 文档的链接,其中指出您必须将该属性设置AllowedOAuthFlowsUserPoolClient为 true。此属性映射到 terraform 中的相同属性
allowed_oauth_flows_user_pool_client = true。
小智 13
TLDR:除了之前的答案之外,请确保您的回调 URL 为小写。
长答案:我遇到了同样的错误。就我而言,我从负载均衡器页面的描述窗口复制了应用程序负载均衡器的 DNS 名称,其中有不同的大小写
所以我将以下内容放入回调 URL 中并遇到了相关错误:
https://*AppLBTest*-123456123456.ap-southeast-1.elb.amazonaws.com/oauth2/idpresponse
Run Code Online (Sandbox Code Playgroud)
将回调 URL 更改为以下内容后,身份验证按预期工作:
https://*applbtest*-123456123456.ap-southeast-1.elb.amazonaws.com/oauth2/idpresponse
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2815 次 |
| 最近记录: |