Подтвердить что ты не робот

URL-адрес ответа Azure Active Directory не работает должным образом

Я указал два URL-адреса на моем URL-адресе конфигурации сайта Azure Active Directory. Один для перенаправления на мою локальную среду, когда я запускаю локальный код, и один для перенаправления на мой веб-сайт Azure, когда я запускаю сайт prod. Но интерфейс Azure Active, похоже, игнорирует настройку. Он использует только один или другой URL-адрес, но не тот и другой. Я видел ссылку, описывающую проблему и возможное решение, но это не сработало для меня. Ссылка:

http://samritchie.net/2013/07/17/azure-ad-single-sign-on-with-multiple-environments-reply-urls/

Как настроить Azure Active Directory для перенаправления в соответствующую среду?

4b9b3361

Ответ 1

Вы не предоставляете информацию о своей реализации, но вот решение для любого случая.

Вы можете использовать конфигурацию WIF, которая полностью конфигурируется в вашем web.cofing, или вы можете использовать OWIN, где конфигурация находится в файле Config.Auth.cs. В любом случае STS Azure AD будет использовать только URI ответа по умолчанию, независимо от того, откуда идут вызовы. Вы должны явно указать ReplyUrl для указания Azure AD вернуть пользователя на один из зарегистрированных URL-адресов ответов.

WIF-решение

Когда вы используете WIF, ваша веб-конфигурация содержит следующий раздел:

  <system.identityModel.services>
    <federationConfiguration>
      <cookieHandler requireSsl="true" />
      <wsFederation passiveRedirectEnabled="true" 
                    issuer="https://login.windows.net/yourtenant.com/wsfed" 
                    realm="https://yourtenant.com/WebSingleTenant" 
                    requireHttps="true" />
    </federationConfiguration>
  </system.identityModel.services>

который немного несовместим! Вы можете добавить тег reply в тег wsFederation, чтобы указать Azure AD для нового URL-адреса ответа:

  <wsFederation passiveRedirectEnabled="true" 
                issuer="https://login.windows.net/yourtenant.com/wsfed" 
                realm="https://yourtenant.com/WebSingleTenant" 
                reply="http://any_registered_url/"
                requireHttps="true" />

Обратите внимание, что здесь вы можете использовать только зарегистрированные URL-адреса ответов.

Чтобы изменить атрибут ответа, вы можете безопасно использовать преобразования web.config, как и для всех других настроек приложения и конкретных подключений.

Решение OWIN

Когда вы используете OWIN, у вас будет файл Startup.Auth.cs, или ваша настройка проверки подлинности будет непосредственно в вашем файле Startup.cs. Он будет выглядеть примерно так:

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

        app.UseCookieAuthentication(new CookieAuthenticationOptions());

        app.UseOpenIdConnectAuthentication(
            new OpenIdConnectAuthenticationOptions
            {
                ClientId = clientId,
                Authority = authority,
                PostLogoutRedirectUri = postLogoutRedirectUri
            });
    }

Обратите внимание на настройки конфигурации для проверки подлинности OpenIdConnect. Вы можете добавить свойство RedirectUri, чтобы указать, куда перенаправить пользователя:

        app.UseOpenIdConnectAuthentication(
            new OpenIdConnectAuthenticationOptions
            {
                ClientId = clientId,
                Authority = authority,
                PostLogoutRedirectUri = postLogoutRedirectUri,
                RedirectUri = "any_registered_redirect_uri"
            });

Вы можете назначить RedirectUri параметру в файле Web.Config, который также вы сможете обрабатывать с помощью преобразований Web.Config.

Ответ 2

В случае OWIN у меня есть следующее конфигурационное решение

            app.UseOpenIdConnectAuthentication(
            new OpenIdConnectAuthenticationOptions
            {
                ClientId = clientId,
                Authority = authority,
                PostLogoutRedirectUri = postLogoutRedirectUri
                #if !DEPLOY
                ,RedirectUri = "https://localhost:44369/"
                #endif
            });

Таким образом, он использует локальную переадресацию, когда я не создаю для развертывания. Проект настроен на объявление DEPLOY для версии, которую я создаю для развертывания. Таким образом, он использует URL перенаправления по умолчанию, настроенный в Azure.