AWS Cognito 注销 URL 格式 - 不存在必需的字符串参数“redirect_uri”

Posted

技术标签:

【中文标题】AWS Cognito 注销 URL 格式 - 不存在必需的字符串参数“redirect_uri”【英文标题】:AWS Cognito Logout Url format - Required String parameter 'redirect_uri' is not present 【发布时间】:2020-10-25 12:41:57 【问题描述】:

我正在尝试格式化注销休息调用以注销 AWS Cognito 用户池,但似乎无法正确完成。

我想在 cognito 退出后重定向到 https://localhost:44333?signout=true。

以下不起作用并返回“必需的字符串参数'redirect_uri'不存在”:

https://tradingreplay-test.auth.eu-west-1.amazoncognito.com/error?client_id=***ClientId***&logout_uri=https://localhost:44333?signout=true

我已经检查并且 https://localhost:44333 位于应用程序客户端的有效注销 url 列表中。

【问题讨论】:

查询字符串可能是不允许的。 如果您尚未将注销 URL 添加到 Cognito 应用设置中的允许注销 URL 列表中,则会收到此错误。 【参考方案1】:

logout URL 的标准要求是不保留任何查询字符串参数。 您可以设置 cookie 或处理对 https://localhost:44333/logout/ 的请求。

https://tradingreplay-test.auth.eu-west-1.amazoncognito.com/error?client_id=***ClientId***&logout_uri=https://localhost:44333/signout/

由于 Cognito 与 SAML 兼容,它可能会通过忽略查询字符串或抛出错误以相同的兼容方式处理 logout。

【讨论】:

谢谢 - 我浏览了文档,并没有真正理解 logout_uri 的“com.myclientapp://myclient/logout”部分的含义。注销页面设置在哪里? 它字面意思是在您链接的文档中使用带有查询参数的GET 请求,就像在上面的问题中一样。此外,Cognito 不是 SAML 提供者,而是 OpenID 提供者。它只是支持连接到 SAML 第 3 方身份提供者。

以上是关于AWS Cognito 注销 URL 格式 - 不存在必需的字符串参数“redirect_uri”的主要内容,如果未能解决你的问题,请参考以下文章

AWS Cognito 中的“访问令牌不包含 openid 范围”

如何使用 Amazon Cognito 注销终端节点?

AWS Cognito:Cognito 用户池的元数据 URL 在哪里?

Nest.js 与 AWS Cognito,如何访问用户属性

AWS cognito - 我们可以修改 Amazon Cognito 在使用谷歌提供商进行身份验证时提供的重定向 URL

AWS Cognito 内置登录重定向问题