Я использую MVC5, аутентифицировал Azure AD с использованием OpenIdConnect.
Мое приложение работает под 4 различными регистрациями приложений Azure AD;localhost, версия DEV, версия UAT и производственная версия.
UAT и производство работают под разными слотами развертывания в одной и той же веб-службе Azure.
Все отлично работает, кроме выхода из системыфункциональность в слоте развертывания UAT в Azure.Когда я нажимаю «Выйти», я перехожу к выходу Microsoft из системы «Вы вышли из своей учетной записи».После того, как я вернусь к URL-адресу, он снова войдет в систему (я также нажал «не держать меня в системе»).
Есть идеи, почему это может происходить в одной среде?Манифесты регистрации приложения Azure AD практически идентичны, за исключением URL-адресов и уникальных идентификаторов.
Я использую пакет "UseKentorOwinCookieSaver".
Метод выхода:
public void SignOut()
{
HttpContext.GetOwinContext().Authentication.SignOut(
OpenIdConnectAuthenticationDefaults.AuthenticationType, CookieAuthenticationDefaults.AuthenticationType
);
}
Startup.cs:
public void ConfigureAuth(IAppBuilder app)
{ app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseKentorOwinCookieSaver();
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = authority,
PostLogoutRedirectUri = postLogoutRedirectUri,
Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthenticationFailed = context =>
{
context.HandleResponse();
context.Response.Redirect("/Error/message=" + context.Exception.Message);
return Task.FromResult(0);
},
SecurityTokenValidated = context =>
{
OnAuth();
return Task.FromResult(0);
}
},
AuthenticationMode = AuthenticationMode.Passive
}
);
app.Use((context, next) =>
{
// The function to call...
OnAuth();
return next.Invoke();
});
}