У меня проблемы с функцией выхода из системы в IdentityServer 4. Мое приложение IS4 в основном является результатом учебного пособия на их веб-сайте, поэтому его поведение на самом деле не настраивается.Я также использую ASP.net Core Identity.У меня есть клиент MVC (опять же, в основном шаблон проекта).Я просто добавил кнопку «Выйти» в верхней части страницы указателя, чтобы выйти из текущего аутентифицированного пользователя.
Это метод выхода из системы в моем клиенте MVC:
public async Task Logout()
{
await HttpContext.SignOutAsync("Cookies");
await HttpContext.SignOutAsync("oidc");
}
В точности так, как говорится в руководстве.
Это конфигурация в Startup.cs клиента MVC:
services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookies";
options.DefaultChallengeScheme = "oidc";
})
.AddCookie("Cookies")
.AddOpenIdConnect("oidc", options =>
{
options.SignInScheme = "Cookies";
options.Authority = "http://localhost:5000";
options.RequireHttpsMetadata = false;
options.CallbackPath = new PathString("/Home/");
options.ClientId = "Core.WebUI";
options.ClientSecret = "secret";
options.ResponseType = "code id_token";
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
options.Scope.Add("offline_access");
});
Ничего особенного ... Теперь конфигурация клиента MVC в приложении IS4:
new Client
{
ClientId = "Core.WebUI",
ClientName = "MVC Client",
ClientSecrets = new List<Secret>
{
new Secret("secret".Sha256())
},
AllowedGrantTypes = GrantTypes.HybridAndClientCredentials,
RequireConsent = false,
// where to redirect to after login
RedirectUris = { "http://localhost:5011/Home/" },
// where to redirect to after logout
PostLogoutRedirectUris = { "http://localhost:5011/Home/" },
AlwaysSendClientClaims = true,
AlwaysIncludeUserClaimsInIdToken = true,
AllowedScopes =
{
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Profile
},
AllowOfflineAccess = true
}
Опять же, в основном то, что говорится в учебнике.Моя проблема: когда пользователь подключен, а затем я нажимаю кнопку выхода из системы, я перенаправляюсь в приложение IS4 на странице выхода, сообщая, что я вышел из системы.Но на самом деле это не так, потому что, если я вернусь к своему MVC, я все равно смогу получить доступ к защищенным функциям (с атрибутом Authorize).Чтобы правильно выйти из системы, когда я нахожусь на странице выхода из моего приложения D4, мне нужно нажать на кнопку выхода из приложения IS4 ... И только тогда я правильно выхожу из системы ...
Я хочу, чтобы при нажатии кнопки «Выход» на клиенте MVC я был ДЕЙСТВИТЕЛЬНО вышел из системы и был перенаправлен на домашнюю страницу клиента MVC (без сообщения «Вы вышли из системы»)страница)
Я довольно новичок в IS4 и ADP.NET, поэтому любая помощь приветствуется ... Спасибо!