У меня есть front front app 5 и backend api на c # с использованием сервера идентификации.Проблема в том, что когда я нажимаю кнопку выхода из системы, токен удаляется, и я перенаправляюсь на страницу выхода из системы.
Но когда я пытаюсь обновить главную страницу, меня перенаправляют на microsoftonline.com, аутентифицируемый автоматически, и перенаправляют обратно на главную страницу. Мне не хватает, предоставляя здесь имя пользователя и пароль, и это происходит в chrome incognito.
Что я заметил, так это то, что если я вручную удалю файл cookie с сайта microsoftonline.com и повторите процесс, на этот раз у меня спросят имя пользователя и пароль.
Итак, сначала я попытался очистить все файлы cookie таким образом, но это не помогло
foreach (var key in HttpContext.Request.Cookies.Keys)
{
HttpContext.Response.Cookies.Append(key, "", new CookieOptions() { Expires = DateTime.Now.AddDays(-1) });
}
ниже приведен метод выхода из системы моего аккаунта-контроллера и экран cookie
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Logout(LogoutViewModel model)
{
var idp = User?.FindFirst(JwtClaimTypes.IdentityProvider)?.Value;
var subjectId = HttpContext.User.Identity.GetSubjectId();
if (idp != null && idp != IdentityServerConstants.LocalIdentityProvider)
{
if (model.LogoutId == null)
{
model.LogoutId = await interaction.CreateLogoutContextAsync();
}
try
{
await signInManager.SignOutAsync();
}
catch (NotSupportedException)
{
}
}
// set this so UI rendering sees an anonymous user
HttpContext.User = new ClaimsPrincipal(new ClaimsIdentity());
// get context information (client name, post logout redirect URI and iframe for federated signout)
var logout = await interaction.GetLogoutContextAsync(model.LogoutId);
var vm = new LoggedOutViewModel
{
PostLogoutRedirectUri = logout?.PostLogoutRedirectUri,
ClientName = logout?.ClientId,
SignOutIframeUrl = logout?.SignOutIFrameUrl
};
await persistedGrantService.RemoveAllGrantsAsync(subjectId, "angular2client");
return View("LoggedOut", vm);
}