Azure AD B2C AuthenticationResponseChallenge

Последние несколько дней я работаю над Azure AD B2C, получил образец и запустил его. Проблема, с которой я столкнулся, точно такая же, как проблема AAD B2C пункт № 3, но я мог получить любой ценный комментарий в этом вопросе, который может решить мою проблему. Пример у меня работает нормально, но когда я реализовал его в своем решении, после предоставления учетных данных AAD B2C я получил:

   private async Task OnRedirectToIdentityProvider(RedirectToIdentityProviderNotification<OpenIdConnectMessage, OpenIdConnectAuthenticationOptions> notification)
    {
        PolicyConfigurationManager mgr = notification.Options.ConfigurationManager as PolicyConfigurationManager;
        if (notification.ProtocolMessage.RequestType == OpenIdConnectRequestType.LogoutRequest)
        {
            OpenIdConnectConfiguration config = await mgr.GetConfigurationByPolicyAsync(CancellationToken.None, notification.OwinContext.Authentication.AuthenticationResponseRevoke.Properties.Dictionary[Startup.PolicyKey]);
            notification.ProtocolMessage.IssuerAddress = config.EndSessionEndpoint;
        }
        else
        {
            OpenIdConnectConfiguration config = await mgr.GetConfigurationByPolicyAsync(CancellationToken.None, notification.OwinContext.Authentication.AuthenticationResponseChallenge.Properties.Dictionary[Startup.PolicyKey]);
            notification.ProtocolMessage.IssuerAddress = config.AuthorizationEndpoint;
        }
    }

В «еще» части AuthenticationResponseChallenge всегда имеет значение null, что вызывает ошибку. Может ли кто-нибудь дать мне подробный ответ, в чем причина этого и как это решить?


person sam    schedule 08.02.2016    source источник
comment
У меня такая же проблема...Вы нашли решение? Ответ ниже предлагает проверить PolicyConfigurationManager.cs, но какую его часть и что искать? Я прошел через это, и это, кажется, работает. Пример формы MS работает и для меня, но при подключении к моему проекту это не так.   -  person kurasa    schedule 23.08.2016


Ответы (1)


У меня была та же проблема, потому что фактический PolicyKey не был инициирован правильно, убедитесь, что у вас есть «PolicyAuthHelpers» (предоставленный Microsoft в качестве исправления, поскольку их текущие библиотеки не могут обрабатывать B2C). Поместите код в PolicyConfigurationManager.cs, и вы, вероятно, сможете найти, почему он не работает. Также убедитесь, что в web.config настроены правильные политики, например:

<add key="ida:SignInPolicyId" value="B2C_1_signin" />

Если это не поможет, вы, конечно, можете просто жестко запрограммировать его:

 OpenIdConnectConfiguration config = await mgr.GetConfigurationByPolicyAsync(CancellationToken.None, notification.OwinContext.Authentication.AuthenticationResponseChallenge.Properties.Dictionary["b2cpolicy"]);
person jed.johan    schedule 04.03.2016