AWS Cognito 内置登录重定向问题
Posted
技术标签:
【中文标题】AWS Cognito 内置登录重定向问题【英文标题】:AWS Cognito built-in sign in redirection issue 【发布时间】:2020-01-16 03:40:45 【问题描述】:我正在尝试将 Cognito 内置登录逻辑合并到我们的工作流程中。 这是我尝试投入使用的场景: 通过用户的 Cognito 内置 UI 成功登录后,我需要重定向到特定的 URI,该用户已在用户池中创建。但我不明白该怎么做。 我已经创建了用户池、应用程序客户端、配置了域、提供了回调 url、创建了一个用户。
我将“允许的 OAuth 流”配置为使用Authorization code grant
“允许的 OAuth 范围”设置为 openid
到目前为止,一切都很好。
然后我想出了以下 URL 来创建 Cognito 内置 UI:
https://<my-domain>.amazoncognito.com/authorize?response_type=code&client_id=<my-client-id>&redirect_uri=https://<my-domain>.amazoncognito.com/login?client_id=<my-client-id>
在我选择的浏览器中执行它后,我会点击 Cognito 内置登录页面。但是在点击“登录”按钮时,我遇到了一个错误:Required String parameter 'redirect_uri' is not present
好吧,我心想,让我们在上述 URL 的末尾添加 redirect_uri 属性,路径将被清除成功,但这种乐观情绪是短暂的。我很害怕:“redirect_mismatch”错误。我尝试提供多个回调 url,但没有成功。 redirect_mismatch 错误挡住了我的去路。
现在我不知道如何指示 Cognito 重定向到所需的 url。欢迎任何想法。
【问题讨论】:
【参考方案1】:您不应将“redirect_uri”设置为 Cognito 的登录端点。这没有道理。 'redirect_uri' 是一个参数,用于告诉 Cognito 在登录后将用户带到哪里,这将是您的应用程序的 url。
'redirect_uri'应该完全匹配您出于安全原因配置的应用程序客户端的回调 URI 之一,否则您将收到“redirect_mismatch”错误。
访问登录端点:
https://mydomain.auth.us-east-1.amazoncognito.com/login?response_type=code&client_id=CLIENT_ID&redirect_uri=REDIRECT_URI
对于授权端点:
https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?response_type=code&client_id=CLIENT_ID&redirect_uri=REDIRECT_URI
授权端点首先检查您是否有会话cookie表明您已经登录,如果有,它会自动将您重定向到redirect_uri,否则它将通过登录将您带到登录页面带有提供给授权端点的查询字符串的端点。
【讨论】:
以上是关于AWS Cognito 内置登录重定向问题的主要内容,如果未能解决你的问题,请参考以下文章
AWS Cognito 和 Flask 应用程序无法从 url 获取 jwt