Azure B2C示例自定义策略,当SignIng In显示'您的密码不正确时

时间:2017-10-06 18:37:22

标签: azure azure-ad-b2c

我在此处遵循了“入门”工作流程: https://docs.microsoft.com/azure/active-directory-b2c/active-directory-b2c-get-started-custom

我从头开始跟踪它,两次,并且在尝试登录时都有两次登录&注册自定义政策我的提示是'您的密码不正确'。我该如何正确认证?

正在发挥作用的事情:

  • 当我注册时,用户旅程完成,用户被添加到目录
  • 使用内置政策我可以登录并注册
  • 使用内置政策我可以与使用自定义政策注册
  • 的用户登录

使用Application Insights我可以看到以下错误。 (应用了一些卫生设施)

"ValidationRequest":{  
           "ContentType":"Unspecified",
           "Created":"2017-10-06T17:19:34.3995426Z",
           "Key":"ValidationRequest",
           "Persistent":true,
           "Value":"client_id=55555555-5555-5555-5555-555555555555&resource=cccccccc-cccc-cccc-cccc-cccccccccccc&username=MYUSERNAME&password=PASSWORDIENTEREDONSCREEN&grant_type=password&scope=openid&nca=1;1;login-NonInteractive;False"
        },

"ValidationResponse":{  
           "ContentType":"Json",
           "Created":"2017-10-06T17:19:34.3995426Z",
           "Key":"ValidationResponse",
           "Persistent":true,
           "Value":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS70002: The request body must contain the following parameter: 'client_secret or client_assertion'.\\r\\nTrace ID: 55555555-cccc-cccc-cccc-555555555555\\r\\nCorrelation ID: 77777777-7777-7777-7777-777777777777\\r\\nTimestamp: 2017-10-06 17:19:33Z\",\"error_codes\":[70002],\"timestamp\":\"2017-10-06 17:19:33Z\",\"trace_id\":\"55555555-cccc-cccc-cccc-555555555555\",\"correlation_id\":\"77777777-7777-7777-7777-777777777777\"};1;login-NonInteractive;False"
        },

重要的一点似乎是:

  

" AADSTS70002:请求正文必须包含以下参数:' client_secret或client_assertion"

后来它说:

  

"类型的异常' Web.TPEngine.Providers.BadArgumentRetryNeededException'被扔了。"

我已经仔细检查了一些事情:

  • 在我的身份体验框架中>策略密钥,按照本指南中的步骤操作后,我有以下4个密钥:
    • B2C_1A_AdminClientEncryptionKeyContainer
    • B2C_1A_FacebookSecret
    • B2C_1A_TokenEncryptionKeyContainer
    • B2C_1A_TokenSigningKeyContainer
  • 在常规AAD>应用注册,我有申请:
    • IdentityExperienceFramework
    • ProxyIdentityExperienceFramework
  • ProxyIdentityExperienceFramework已从IdentityExperienceFramework委派了Access IdentityExperienceFramework权限。
    • 我已经获得了两个应用的授予权限。
  • 两个应用程序ID都在TrustFrameworkExtensions.xml中被正确替换,每个地方都有两个

非常感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:5)

您的 ProxyIdentityExperienceFramework 应用程序被错误地创建为Web App / API。您需要将其重新创建为Native应用程序。请确保您不要忘记将基本策略中的client_ids更新为相应的新ProxyIdentityExperienceFramework。

错误 AADSTS70002:请求正文必须包含以下参数:当您尝试使用client_id为已注册为Web的应用程序获取令牌时,会出现client_secret或client_assertion App / API但未提供所需的client_secret。在Native应用程序的情况下,不需要client_secret。

登录时,Azure AD B2C的信任框架(执行自定义策略的内容)在内部尝试使用ProxyIdentityExperienceFramework应用程序(Native app)获取IdentityExperienceFramework应用程序(Web API)的令牌。如果您错误地将后者创建为Web App / API,则B2C的策略引擎将无法获得将其自身显示为您的密码不正确错误消息的令牌。