【发布时间】:2018-10-20 05:44:31
【问题描述】:
目前采取的步骤:
- 在 cognito 中设置新用户池
- 生成一个没有秘密的应用客户端;我们称它为 id
user_pool_client_id - 在
user_pool_client_id的用户池客户端设置下,选中“Cognito 用户池”框,添加https://localhost作为回调并退出 url,选中“授权码授予”、“隐式授予”和“允许”下的所有内容OAuth 范围" - 创建域名;我们就叫它
user_pool_domain
使用用户名/密码创建一个新用户
现在,我可以成功前往:
https://{{user_pool_domain}}.auth.us-east-2.amazoncognito.com/oauth2/authorize?response_type=code&client_id={{user_pool_client_id}}&redirect_uri=https%3A%2F%2Flocalhost
这为我提供了一个登录页面,我可以作为我的用户登录,这会将我返回到https://localhost/?code={{code_uuid}}
然后我尝试以下操作:
curl -X POST https://{{user_pool_domain}}.auth.us-east-2.amazoncognito.com/oauth2/token -H 'Content-Type: application/x-www-form-urlencoded' -d 'grant_type=authorization_code&redirect_uri=https%3A%2F%2Flocalhost&code={{code_uuid}}&client_id={{user_pool_client_id}}'
但是,这只会返回以下内容:
{"error":"unauthorized_client"}
token endpoint docs 说unauthorized_client 是因为“不允许客户端进行代码授权流程或刷新令牌”。这令人困惑,因为我选中了允许客户端使用代码授权流程的框。
【问题讨论】:
-
正如 Andrew 所指出的,当
redirect_uri出现问题时,您会收到此错误。使用 localhost 对我来说从来都不是问题,但是当我在调用token端点时省略redirect_uri上的尾部斜杠时,我确实会收到这个(相当误导性的)错误消息。您可以尝试将%2F添加到redirect_uri的末尾吗? -
@MikePatrick 哇,非常感谢!这是缺少的尾部斜杠。这是一个令人沮丧的错误消息,我错过了一天,但它现在确实有效!!!
-
我发现如果我在 AWS 端的应用程序客户端中定义了一个重定向 uri 列表,这也成立 - 当我用单个项目替换列表并让客户端引用单个项目,它工作。否则,我收到了提到的 redirect_uri 错误。
标签: amazon-web-services authentication oauth oauth-2.0 amazon-cognito