在开放ID/OAuth2.0注销中PostLogoutRedirectUri的意义是什么?

cgyqldqp  于 2022-12-11  发布在  Go
关注(0)|答案(2)|浏览(217)

我一直在使用Identity Server 4.0作为我的OpenId Connect提供程序。我可以在Identity Server中使用重定向URI和注销后重定向URI设置客户端。我还一直在使用angular-auth-oidc-client通过Identity Server登录/注销。
登录时,我的客户端库(angular-auth-oidc-client)在调用授权端点时传入了配置中指定的正确URI。当我尝试使用不正确的重定向URI登录时,Identity Server将检查并验证客户端提供的URI是否为该客户端接受的URI之一,如果不是(如预期),则显示错误。
在注销时,我的客户端库在调用注销端点时不发送PostLogoutRedirectUri。Identity Server的注销示例代码不排除要传入的任何URI。它的示例代码只是从数据库中获取注销后重定向Uri值,并在注销页面上创建一个链接。示例代码不仅不允许用户为注销指定重定向URI,但它不执行任何检查甚至不执行重定向(授予其唯一的示例代码,我可以改变它)。我希望我的客户端库在成功注销后传递URI沿着并且Identity Server重定向到该URI,只要它是客户端的“批准”URI之一。

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

uxhixvfz

uxhixvfz1#

这是一个草案标准,不同的库和供应商支持不同,但这里是一个总结:

  • 客户端使用注销后重定向URI以受控方式注销,通常重定向到为用户提供重新登录链接的应用程序页面
  • 客户端可能有多个post_logout_redirect_uri,并根据运行时条件决定使用哪个
  • 发送的post_logout_redirect_uri只有在它伴随着id_token_hint时才能被接受--并且如果它与OAuth客户端的配置值匹配。我相信OIDC会发送当前的id令牌,但值得检查一下这是否在您的浏览器工具中发生。
  • 如果未发送post_logout_redirect_uri,则授权服务器可以使用配置的默认值

请参阅IETF官方文档了解其工作原理。

wn9m85ua

wn9m85ua2#

在我自己的应用程序中,我将其设置为客户端的**/Signout-callback-oidc**URL,例如

PostLogoutRedirectUris = { "https://localhost:5001/signout-callback-oidc" },

/signout-callback-oidc路径在源代码here中定义如下:

/// <summary>
/// The request path within the application's base path where the user agent will be returned after sign out from the identity provider.
/// See post_logout_redirect_uri from http://openid.net/specs/openid-connect-session-1_0.html#RedirectionAfterLogout.
/// </summary>
public PathString SignedOutCallbackPath { get; set; }

我希望这可以给予一些问题。

相关问题