URL-адрес ответа в приложении Azure AD с OpenIDConnect

Я использую Azure AD с OpenIdConnect и одним веб-сайтом с URL-адресом ответа, но мне нужно подключиться через LocalHost для тестирования и реализации другой функции.

Как я могу иметь более одного URL-адреса ответа, используя UseOpenIdConnectAuthentication и без потери доступа в обоих.

Мое приложение настроено с помощью Asp.Net Web.Forms (Visual Studio 2015).

спасибо

Вилела


person Vilela    schedule 28.11.2016    source источник


Ответы (2)


Да, можно динамически изменить URL-адрес ответа с помощью файла RedirectToIdentityProvider. Вы можете сослаться на пример кода ниже:

app.UseOpenIdConnectAuthentication(
           new OpenIdConnectAuthenticationOptions
           {
               ClientId = clientId,
               Authority = authority,
               PostLogoutRedirectUri = postLogoutRedirectUri,
               RedirectUri = postLogoutRedirectUri,
               Notifications = new OpenIdConnectAuthenticationNotifications
               {
                   AuthenticationFailed = context =>
                   {
                       context.HandleResponse();
                       context.Response.Redirect("/Error?message=" + context.Exception.Message);
                       return Task.FromResult(0);
                   },
                    RedirectToIdentityProvider=(context)=>
                    {
                        context.ProtocolMessage.RedirectUri = "";
                        return Task.FromResult(0);
                    }
               }
           });

Однако, если приложение уже развернуто на веб-сервере, изменение URL-адреса перенаправления на localhost может не сработать, как вы ожидали, поскольку для запущенного веб-приложения используются два разных сервера приложений.

person Fei Xue - MSFT    schedule 29.11.2016
comment
Что это будет означать, так это то, что вы должны вручную установить URI перенаправления на URI запроса? Похоже единственный способ.. - person juunas; 29.11.2016
comment
Спасибо за ответ, но я не понимаю, зачем менять URL-адрес перенаправления в Azure AD. Это не автомат? - person Vilela; 29.11.2016
comment
URL-адрес перенаправления, который вы регистрируете для приложения на портале Azure, отличается от URL-адреса перенаправления, который вы передали в запросе. Объявление Azure проверит переданный URL-адрес перенаправления на основе регистра значений на портале. И если значение проверено, Azure AD вернет этот URL-адрес клиенту. Пожалуйста, не стесняйтесь, дайте мне, если проблема не будет решена. - person Fei Xue - MSFT; 30.11.2016
comment
@Vilela Если ответ решает проблему, отметьте его как ответ, чтобы другие сообщества, у которых есть такая же проблема, могли легко распознать ответ. - person Fei Xue - MSFT; 19.12.2016

Да, это работает, но мне нужно было реализовать другой код, например:

RedirectToIdentityProvider = (context) =>
                    {
                        // This ensures that the address used for sign in and sign out is picked up dynamically from the request
                        // this allows you to deploy your app (to Azure Web Sites, for example)without having to change settings
                        // Remember that the base URL of the address used here must be provisioned in Azure AD beforehand.
                        string appBaseUrl = context.Request.Scheme + "://" + context.Request.Host + context.Request.PathBase;
                        context.ProtocolMessage.RedirectUri = appBaseUrl;
                        context.ProtocolMessage.PostLogoutRedirectUri = appBaseUrl;
                        return System.Threading.Tasks.Task.FromResult(0);
                    },

Но у меня проблема с несколькими арендаторами. Другие пользователи проходят аутентификацию в моих арендаторах. Это мои проблемы или проблемы Azure?

Спасибо, Вилела

person Vilela    schedule 08.12.2016