Интеграция ADFS SSO в существующее веб-приложение. net - PullRequest
0 голосов
/ 01 апреля 2020

У меня правильно настроен активный каталог, и я могу go подписать IDP на странице с URL, который выглядит следующим образом:

https://SERVER/adfs/ls/idpinitiatedsignon.htm

Я создал новый и я могу выполнить простой вход через это приложение.

Теперь я пытаюсь реализовать это в текущем коде веб-приложения.

В простом проекте после запуска приведенного ниже кода , он перенаправляет на знак IDP на странице.

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        ConfigureAuth(app);
    }
    private static string realm = ConfigurationManager.AppSettings["ida:Wtrealm"];
    private static string adfsMetadata = ConfigurationManager.AppSettings["ida:ADFSMetadata"];

    public void ConfigureAuth(IAppBuilder app)
    {
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

        app.UseCookieAuthentication(new CookieAuthenticationOptions());

        app.UseWsFederationAuthentication(
            new WsFederationAuthenticationOptions
            {
                Wtrealm = realm,
                MetadataAddress = adfsMetadata
            });
    }
}

Когда этот код выполняется в существующем проекте, он никогда не перенаправляет и вместо этого идет вперед и загружает страницу Default.aspx. Я что-то пропустил? Я хочу, чтобы пользователь выполнил вход, если это еще не сделано, но я не могу понять, почему приложение не перенаправляет для входа. Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 02 апреля 2020

Я нашел решение после нескольких дней попыток. Я добавил этот код в начало метода page.aspx page_load, чтобы запустить его, если не вошел в систему:

            if (!System.Web.HttpContext.Current.Request.IsAuthenticated)
            {
                System.Web.HttpContext.Current.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = "/" },
                    WsFederationAuthenticationDefaults.AuthenticationType);
            }
...