URI настраиваемой страницы политики входа в Azure B2C не вызывается из OWIN

Я установил URI настраиваемой страницы политики входа в хранилище BLOB-объектов, но он всегда переходит на страницу входа Microsoft. Я использую owin и следующий код:

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

 app.UseCookieAuthentication(new CookieAuthenticationOptions());

        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);
                    }
                }
            });
    }

Страница настроена и работает.

введите здесь описание изображения

Следующий URL-адрес, который я использую

 <add key="ida:AADInstance" value="https://login.microsoftonline.com/te/{0}/{1}/v2.0/.well-known/openid-configuration" />

Я использую следующий образец: https://github.com/Azure-Samples/active-directory-b2c-dotnet-webapp-and-webapi.

Получение следующей ошибки:

 Response status code does not indicate success: 404 (Not Found). 

 Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

 Exception Details: System.Net.Http.HttpRequestException: Response status code does not indicate success: 404 (Not Found).

Ниже приведен экран входа в систему Microsoft по умолчанию:  введите описание изображения здесь


person Furqan Misarwala    schedule 06.06.2017    source источник
comment
Можете ли вы добавить снимок экрана со страницей входа в Microsoft, о которой вы говорите?   -  person Saca    schedule 06.06.2017
comment
@Saca: Я обновил вопрос со страницей входа в Microsoft.   -  person Furqan Misarwala    schedule 07.06.2017
comment
Когда вы получите ошибку 404, тогда, если страница выглядит успешно (хотя и без вашей настройки)   -  person Saca    schedule 07.06.2017
comment
Я столкнулся с той же проблемой, о которой говорилось ниже, я вижу другой URL-адрес, созданный из owin, в этом случае я получаю ошибку 404: stackoverflow.com/questions/44133401 /   -  person Furqan Misarwala    schedule 07.06.2017
comment
Какой другой URL-адрес вы видите сгенерированным? Вы обновили свои пакеты слепков, связанных с идентификацией, в соответствии с этим сообщением на StackOverflow?   -  person Saca    schedule 07.06.2017
comment
Ах! Проблема заключалась в Microsoft.AspNet.Web.Optimization, я обновился до новой версии, и она была решена. Спасибо, что уделили ваше драгоценное время.   -  person Furqan Misarwala    schedule 07.06.2017
comment
Рад слышать. Можете ли вы опубликовать ответ на свой вопрос в качестве ответа и пометить его как ответ?   -  person Saca    schedule 07.06.2017


Ответы (2)


Неважно, ребята, проблема была решена обновлением Microsoft.IdentityModel.Protocol.Extensions до версии 1.0.4.4 или новее.

Надеюсь, это поможет всем, кто все еще борется с этим.

person Furqan Misarwala    schedule 07.06.2017

Если вы все еще получаете ошибку 404, вы можете проверить следующее:

  1. Проверьте конечную точку метаданных вашей политики B2C и основывайте свой URL-адрес AADInstance на этом. Пример в моей политике:  Конечная точка метаданных политики входа

Так что у меня будет URL AADInstance = "https://login.microsoftonline.com/ {0} / v2.0 / .well-known / openid-configuration? p = {1} "

  1. В OpenIdConnectAuthenticationOptions используйте свойство Metadata вместо Authority и используйте AADInstance выше из конечной точки метаданных.

    new OpenIdConnectAuthenticationOptions { ClientId = clientId, MetadataAddress = String.Format(<AadInstance>, <Tenant>,<SignInPolicyId>), PostLogoutRedirectUri = postLogoutRedirectUri, RedirectUri = postLogoutRedirectUri, Notifications = new OpenIdConnectAuthenticationNotifications { AuthenticationFailed = context => { context.HandleResponse(); context.Response.Redirect("/Error?message=" + context.Exception.Message); return Task.FromResult(0); } } });

Дополнительное примечание, вы упомянули в своем вопросе, что вы

установили URI настраиваемой страницы политики входа в хранилище больших двоичных объектов, но он всегда переходит на страницу входа в Microsoft

Обратите внимание, что ваш собственный HTML-код будет использоваться только для изменения внешнего вида страницы, но страница все равно будет иметь домен login.microsoftonline.com. А также, как указано в документация," в настоящее время страницы входа в локальную учетную запись, соответствующие страницы сброса пароля и письма с подтверждением могут быть настроены только с помощью фирменной символики компании ".

person ragyaiddo    schedule 07.06.2017