1

最近几天我一直在研究 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 始终为空,这会引发错误。谁能给我一个详细的答复,是什么原因造成的以及如何解决?

4

1 回答 1

0

我遇到了同样的问题,因为实际的 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"]);
于 2016-03-04T08:30:48.407 回答