尝试使用自定义身份体验框架策略以 Azure AD B2C 用户身份登录时出现错误 70001

Error 70001 trying to sign in as Azure AD B2C user with custom Identity Experience Framework policy

我们有一个使用 Azure AD B2C 保护的 Web 应用程序,使用自定义身份体验框架策略允许用户使用社交身份(Microsoft、Google、Facebook)或其他身份注册和登录联合 Azure AD 实例,或使用 'local' 个电子邮件/密码帐户。

所有社交帐户和 Federated AD 均正常工作。使用 Email/Password 注册和登录工作正常,但我们现在遇到错误。我们没有故意对我们的 Email/Password 配置进行任何更改,因为这最后一次被认为是有效的,所以我们不确定这是怎么发生的。

问题是:使用新的电子邮件地址注册工作正常,并且在该过程完成后,用户正确登录,并且他们的帐户出现在目录中。但是,如果用户注销,则任何重新登录的尝试都会失败:

(显示的电子邮件地址不是实际地址。多个用户使用新旧 email/password 组合重复错误。)

深入门户网站,发现潜在错误为:

70001 The application named X was not found in the tenant named Y. This can happen if the application has not been installed by the administrator of the tenant or consented to by any user in the tenant. You might have sent your authentication request to the wrong tenant.

此错误有时似乎与未能向门户中的应用程序授予权限有关。我们已尝试删除和恢复所有权限,并重新授予权限。这并没有解决问题。

有谁知道可能导致此问题的原因,特别是为什么注册/登录工作正常,但返回登录却不行?

更新:

只是为了确认我们在 AD 目录中配置了 IEF 和 Proxy IEF 应用程序:

我们在 TrustFrameworkExtensions.xml 中配置了 login-NonInteractive 技术配置文件:

连接 Application Insights 后(按照这些说明 https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-troubleshoot-custom),我们能够得到这个更详细的错误:

AADSTS70001: Application with identifier 'ProxyIdentityExperienceFrameworkAppID' was not found in the directory weapageengine.onmicrosoft.com

我们的任何自定义策略中唯一出现 'ProxyIdentityExperienceFrameworkAppID' 的地方显示在上面的 XML 片段中,但根据此处的文档,这似乎是正确的:https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack/blob/3b4898fec3bf0014b320beffa6eb52ad68eb6111/SocialAndLocalAccounts/TrustFrameworkExtensions.xml#L38 - 除非我们也意味着更新那些 'DefaultValue' 属性?

分辨率: 根据下面的答案,有必要使用相关的应用程序 ID 更新元数据和默认值。值得注意的是,在 GitHub 示例 https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack/blob/3b4898fec3bf0014b320beffa6eb52ad68eb6111/SocialAndLocalAccounts/TrustFrameworkExtensions.xml#L38 中,样板值的大小写不同,导致我们在替换全部中丢失了一个:

本地帐户 sign-in 根据 Azure AD B2C 目录对最终用户进行身份验证,然后从中读取用户对象。

本地帐户 sign-up 和社交帐户 sign-in 不会根据 Azure AD B2C 目录对最终用户进行身份验证。本地帐户 sign-up 将用户对象写入其中。社交帐户 sign-in 将身份验证委托给社交身份提供者,然后在用户对象不存在时将用户对象写入 Azure AD B2C 目录,或者在用户对象不存在时从 Azure AD B2C 目录中读取用户对象确实存在。

要启用本地帐户 sign-in 对 Azure AD B2C 目录的最终用户身份验证,您必须 add the Identity Experience Framework applications to the Azure AD B2C directory and then configure these IEF applications with the login-NonInteractive technical profile.

本地账号sign-up和社交账号sign-in不需要这些申请。