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 или нет.

Есть ли способ сделать эту работу?

0 ответов

Другие вопросы по тегам