OWIN - Используйте проверку подлинности cookie и федеративную проверку подлинности для защиты одного и того же веб-сайта
У меня есть веб-сайт, где пользователи являются либо внешними пользователями, которым необходимо предоставить имя пользователя / пароль, либо внутренними пользователями в нашей сети (AD). Я попытался смешать и сопоставить OWIN Cookie Authentication (NuGet Microsoft.Owin.Security.Cookies) и OWIN Federated Authentication с ADFS (NuGet Microsoft.Owin.Security.WsFederation). Я попробовал это:
public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(DefaultAuthenticationTypes.ApplicationCookie);
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Login"),
Provider = new CookieAuthenticationProvider
{
OnApplyRedirect = ctx =>
{
// Apply the redirect if UseADFSFlag is not found in the Query String
if (String.IsNullOrWhiteSpace(ctx.Request.Query.Get("UseADFS")))
{
ctx.Response.Redirect(ctx.RedirectUri);
}
}
}
});
app.UseWsFederationAuthentication(
new WsFederationAuthenticationOptions
{
MetadataAddress = ConfigurationManager.AppSettings["adsfs.MetadataAddress"],
Wtrealm = ConfigurationManager.AppSettings["adsfs.Wtrealm"],
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie
});
}
CookieAuthenticateion происходит в первую очередь. Если параметр QueryString "UseADFS" отсутствует, происходит обычное перенаправление на страницу входа. В противном случае двигаться дальше. Я ожидаю, что FederationAuthentication вступит во владение ТОЛЬКО, когда параметр UseADFS существует, но перенаправление входа в систему никогда не происходит, и проверка подлинности федерации всегда выполняется независимо от того, присутствует ли параметр UseADFS или нет.
Есть ли способ сделать эту работу?