Есть ли какая-либо помощь для выхода из обратного канала для клиентов MVC owin.Я пытаюсь реализовать единый выход для всех клиентов.В настоящее время я могу включить функцию SignOutCleanup каждого клиента с помощью BackChannelLogoutUri при выходе из одного клиента, но у меня возникли проблемы с удалением файлов cookie других клиентов, поскольку sid имеет значение null.Другие клиенты остаются в системе, поскольку их cookie сохраняются.
ниже приведен код, реализованный в контроллере клиентов:
public ActionResult LogOut()
{
Request.GetOwinContext().Authentication.SignOut();
return Redirect("/");
}
public void SignoutCleanup(string sid)
{
var cp = (ClaimsPrincipal)User;
var sidClaim = cp.FindFirst("sid");
if (sidClaim != null && sidClaim.Value == sid)
{
Request.GetOwinContext().Authentication.SignOut("Cookies");
}
}
, но sid возвращает ноль.
клиентКонфиг в Ids4:
new Client
{
ClientId = "MvcApp4",
AllowedGrantTypes = GrantTypes.HybridAndClientCredentials,
ClientSecrets =
{
new Secret("Mvc-Secret4".Sha256())
},
// where to redirect to after login
RedirectUris = { "http://localhost:55718/signin-oidc" },
// where to redirect to after logout
PostLogoutRedirectUris = { "http://localhost:55718/" },
AllowedScopes = new List<string>
{
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Profile,
"API"
},
AllowOfflineAccess = true,
BackChannelLogoutSessionRequired = true,
BackChannelLogoutUri = "http://localhost:55718/Home/SignoutCleanup/"
}