ID サーバー Version="4.0.0" を使用しています。クライアントのログアウト時にすべてのクライアントからのサインアウトを実装したいと考えています。
例: - 以下のアプリケーション URL が IS に接続されています。クライアント MVC1 が URL https://localhost:5002/ からログアウトすると、他のクライアントもログアウトする必要があります。backoutchannelURL を追加するように彼らが言っている IS ドキュメントを調べます
- https://localhost:5002/ (クライアント: MVC1、BackChannelLogoutUri: https://localhost:5002/home/logout)
- https://localhost:5003/ (クライアント: MVC2、BackChannelLogoutUri: https://localhost:5003/home/logout)
- https://localhost:5004/ (クライアント: MVC3、BackChannelLogoutUri: https://localhost:5004/home/logout)
IS--> accountController
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Logout(LogoutInputModel model)
{
// build a model so the logged out page knows what to display
var vm = await BuildLoggedOutViewModelAsync(model.LogoutId);
if (User?.Identity.IsAuthenticated == true)
{
// delete local authentication cookie
await HttpContext.SignOutAsync();
// raise the logout event
await _events.RaiseAsync(new UserLogoutSuccessEvent(User.GetSubjectId(), User.GetDisplayName()));
}
// check if we need to trigger sign-out at an upstream identity provider
if (vm.TriggerExternalSignout)
{
// build a return URL so the upstream provider will redirect back
// to us after the user has logged out. this allows us to then
// complete our single sign-out processing.
string url = Url.Action("Logout", new { logoutId = vm.LogoutId });
// this triggers a redirect to the external provider for sign-out
return SignOut(new AuthenticationProperties { RedirectUri = url }, vm.ExternalAuthenticationScheme);
}
return View("LoggedOut", vm);
}
MVC アプリケーション --> ホーム/ログアウト
[HttpPost("Logout")]
[AllowAnonymous]
public IActionResult BackchannelLogout()
{
return SignOut("Cookies", "oidc");
}
なぜそれが機能していないのかについて何か考えはありますか?