Итак, у меня есть решение, использующее Microsoft.Owin.Security.WsFederation 3.0.0-rc2, и я пытаюсь получить пассивный выход, вызывая обратно поставщика удостоверений, чтобы выйти оттуда, а также мое приложение (поэтому я не получайте цикл перенаправления, просто войдя в систему).
В настоящее время я использую WAAD в качестве конечной точки WS-Fed.
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/login")
});
app.SetDefaultSignInAsAuthenticationType(DefaultAuthenticationTypes.ApplicationCookie);
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
app.UseWsFederationAuthentication(new WsFederationAuthenticationOptions
{
AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Passive,
AuthenticationType = WsFederationAuthenticationDefaults.AuthenticationType,
Wtrealm = ConfigurationManager.AppSettings["WSFEDRealm"],
MetadataAddress = ConfigurationManager.AppSettings["WSFEDMetadataAddress"]
});
Я могу заставить его работать нормально, если я использую активный режим, но было бы неплохо иметь возможность использовать и пассивный.
Я выхожу, используя:
_authenticationManager.SignOut();
Я думаю, что это как-то связано с этими строками в помощнике выхода
if (revoke.AuthenticationTypes == null || revoke.AuthenticationTypes.Length == 0)
{
return authenticationMode == AuthenticationMode.Active ? revoke : null;
}
Но я не уверен, как добавить словарь revoke.AuthenticationTypes?
authenticationType
в коллекциюrevoke.AuthenticationTypes
, вы должны вызвать_authenticationManager.SignOut
с этимauthenticationType
в параметре, например: если вы вызовете_authenticationManager.SignOut("ExternalCookie")
, тогда у вас будет ExternalCookie в коллекцииrevoke.AuthenticationTypes
- person Alexander Lysenko   schedule 23.07.2021