post_logout_redirect_uri 为空 OpenIdConnect IdentityServer
Posted
技术标签:
【中文标题】post_logout_redirect_uri 为空 OpenIdConnect IdentityServer【英文标题】:post_logout_redirect_uri is empty OpenIdConnect IdentityServer 【发布时间】:2021-06-25 10:03:21 【问题描述】:我试图在注销后将我的用户重定向到应用登录页面,但我找不到设置 post_logout_redirect_uri 参数的方法。 我正在使用 OpenIdConnect 和 IdentityServer,因此在从客户端启动 signOut 后,用户被重定向到 IdentityServer 结束会话 endPoint,但 post_logout_redirect_uri 为空。
客户:
var props = new AuthenticationProperties()
RedirectUri = HttpContext.Request.Scheme + "://" + HttpContext.Request.Host.Value
;
await HttpContext.SignOutAsync(props);
await HttpContext.SignOutAsync(OpenIdConnectDefaults.AuthenticationScheme, props);
据我了解,带有“oidc”的方法 HttpContext.SignOutAsync() 然后重定向到 IdentityServer 结束会话端点:
如您所见,post_logout_redirect_uri 查询参数为空。由于配置,这是自动发生的,所以我希望我可以在某个地方设置 post_logout_redirect_uri,但我找不到它。有什么想法吗?
【问题讨论】:
【参考方案1】:post_logout_redirect_uri 可以在启动时设置,您可以在其中使用AddOpenIdConnect
注册您的外部身份验证方案。您设置的OpenIdConnectOptions
有一个名为SignedOutCallbackPath
的属性:
/// <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;
您也可以检查:
/// <summary>
/// The uri where the user agent will be redirected to after application is signed out from the identity provider.
/// The redirect will happen after the SignedOutCallbackPath is invoked.
/// </summary>
/// <remarks>This URI can be out of the application's domain. By default it points to the root.</remarks>
public string SignedOutRedirectUri get; set; = "/";
【讨论】:
以上是关于post_logout_redirect_uri 为空 OpenIdConnect IdentityServer的主要内容,如果未能解决你的问题,请参考以下文章