oauth-2.0 - Open Id/OAuth2.0注销中的PostLogoutRedirectUri有什么意义?

标签 oauth-2.0 identityserver4 openid-connect logout angular-auth-oidc-client

我一直使用 Identity Server 4.0 作为我的 OpenId Connect 提供商。我可以使用重定向 Uris 和注销后重定向 Uris 在 Identity Server 中设置客户端。我还一直在使用 angular-auth-oidc-client 通过身份服务器登录/注销。

登录时,我的客户端库(angular-auth-oidc-client)在调用授权端点时确实会传入配置中指定的正确 Uri。当我尝试使用不正确的重定向 Uri 登录时,Identity Server 会检查并验证客户端提供的 Uri 是否是该客户端可接受的 Uri 之一,如果不是(如预期),则会显示错误。

说到注销,似乎都没有内置。我的客户端库在调用注销端点时不发送 PostLogoutRedirectUri。 Identity Server 的注销示例代码不排除传入的任何 URI。它的示例代码只是从数据库获取注销后重定向 Uri 值,并在注销页面上创建一个链接。示例代码不仅不允许用户指定注销的重定向 Uri,而且不执行任何检查,甚至不执行重定向(授予其唯一的示例代码,我可以更改它)。我希望我的客户端库能够传递 Uri,身份服务器在成功注销后重定向到该 Uri,只要它是客户端“批准的”Uri 之一。

我的问题是:PostLogoutRedirectUri 的意义何在?我使用的 Identity Server 和 OIDC 客户端库都没有做任何有用的事情。对于用于将此 Uri 传递到 Identity Server 的查询字符串参数的名称,似乎甚至没有达成一致的约定。然而,Identity Server 和 Angular 客户端库似乎都对其有一些支持。那么这件事有什么意义呢?是以后会添加或充实的东西吗?我是否错过了一些描述其用途以及如何使用它的文档?

最佳答案

这是一个标准草案,库和供应商之间的支持有所不同,但这里有一个摘要:

  • 客户端使用注销后重定向 URI 以受控方式注销,通常会重定向到为用户提供再次登录链接的应用程序页面

  • 客户端可能有多个 post_logout_redirect_uri,并根据运行时条件决定使用哪个

  • 发送的 post_logout_redirect_uri 仅当伴随着 id_token_hint 且与 OAuth 客户端的配置值匹配时才会被接受。我相信 OIDC 会发送当前的 id token ,但值得检查一下您的浏览器工具中是否发生了这种情况。

  • 如果未发送 post_logout_redirect_uri,则授权服务器可能会使用默认配置的配置

请参阅official IETF docs关于这是如何工作的。

关于oauth-2.0 - Open Id/OAuth2.0注销中的PostLogoutRedirectUri有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67322449/

相关文章:

authentication - 身份服务器如何在 API 或我们使用 Authorize 属性时验证 token ?

服务器重新启动后的 IdentityServer4 访问 token

proxy - Keycloak 身份代理(到 Azure AD)在授权码交换上被公司代理阻止

node.js - Salesforce 不遵守提示选项

java - 从 Spring RESTful 资源服务器验证 OAuth 2.0 访问 token

java - 制定特定的 HTTP 发布消息

oauth-2.0 - 在 IdentityServer 和应用程序之间保持数据同步

javascript - 使用 id_token 作为重定向 URL 中的参数的重定向用户导致身份用户为 Null

javascript - 使用带有身份服务器 4 的 oidc 客户端静默登录

python - 谷歌云端点: Picturesque App