我已经实现了反向通道注销并且 URL 正在调用所有客户端,但它不是从所有客户端注销
设想
- 客户端-A 登录
- 客户端-B登录
- 单击 Client-A 的注销按钮,重定向到身份服务器注销页面
- 为客户端 B 调用反向通道注销 URL
- 为客户端 A 调用反向通道注销 URL
- 检查身份服务器 --> 用户已经注销
- 输入 Client-A 的 URL,重定向到 Identity Server 进行登录
- 输入Client-B的URL,我可以查看(假设已经重定向到身份服务器bcos logout的登录页面)
注销代码
public async Task<IActionResult> Logout()
{
Console.WriteLine("** MVC2 logout " + DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff tt"));
var client = _httpClientFactory.CreateClient("IDPClient");
var discoveryDocumentResponse = await client.GetDiscoveryDocumentAsync();
if (discoveryDocumentResponse.IsError)
{
throw new Exception(discoveryDocumentResponse.Error);
}
await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
await HttpContext.SignOutAsync(OpenIdConnectDefaults.AuthenticationScheme);
return Redirect(discoveryDocumentResponse.EndSessionEndpoint);
}
BackChannel 注销代码
[HttpPost]
[AllowAnonymous]
public async Task<IActionResult> BackChannelLogout(string token)
{
Console.WriteLine("*********************** MVC1 --> BackChannelLogout " + DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff tt"));
await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
await HttpContext.SignOutAsync(OpenIdConnectDefaults.AuthenticationScheme);
return NoContent();
}
我想实现,如果从客户端注销它,它应该重定向到身份服务器进行登录