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

fei*_*i0x 2 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"
        },
Run Code Online (Sandbox Code Playgroud)

重要的一点似乎是:

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

后来它说:

"抛出了类型'Web.TPEngine.Providers.BadArgumentRetryNeededException'的异常."

我仔细检查了一些事情:

  • 在我的Identity Experience Framework> Policy Keys中,按照本指南中的步骤操作后,我有以下4个键:
    • B2C_1A_AdminClientEncryptionKeyContainer
    • B2C_1A_FacebookSecret
    • B2C_1A_TokenEncryptionKeyContainer
    • B2C_1A_TokenSigningKeyContainer
  • 在常规的AAD> App注册中,我有以下应用程序:
    • IdentityExperienceFramework
    • ProxyIdentityExperienceFramework
  • ProxyIdentityExperienceFramework已从IdentityExperienceFramework委派了Access IdentityExperienceFramework权限.
    • 我已经获得了两个应用的授予权限.
  • 两个应用程序ID都在TrustFrameworkExtensions.xml中被正确替换,每个都有两个位置

任何帮助深表感谢.谢谢.

Sac*_*aca 5

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

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

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