【问题标题】:Azure AD B2C Internal Error uploading Custom Policy上传自定义策略的 Azure AD B2C 内部错误
【发布时间】:2018-09-06 14:46:40
【问题描述】:

我遇到了一个问题,即一组自定义策略可以毫无问题地上传到一个租户(开发租户),但无法上传到另一个租户(生产租户)。这些策略在(工作的)开发租户上正常运行。

我按以下顺序上传文件:

  1. TrustFrameworkBase.xml 上传正常
  2. TrustFrameworkExtensions.xml 上传正常
  3. SignUpOrSignin.xml 因上述错误而失败
  4. ProfileEdit.xml 因上述错误而失败
  5. PasswordReset.xml 上传成功

我唯一的线索是,如果我在 B2C 应用程序中查询失败租户的扩展声明,它只会显示 8 个中的 2 个。如果我对工作租户运行相同的查询,它会显示全部 8 个。我我正在使用此示例应用程序进行此查询:https://github.com/AzureADQuickStarts/B2C-GraphAPI-DotNet

据我所知,两个租户的配置相同,并且我检查了各种 ID 等是否配置正确。但总有可能我错过了什么!

谁能帮忙?

xml 文件:https://1drv.ms/f/s!ApxUZQaL9hp0h1ACYgWzgzsGwCOc

更多信息

我实际上可以运行错误上传的策略。但是,当我尝试通过运行策略创建用户帐户时,我收到一条消息“无法验证所提供的信息”。在页面顶部,在<div> 内,ID 为claimVerificationServerError。这可能与 B2C 应用程序中缺少的扩展声明有关。所以看起来问题在于创建扩展声明。但是相同的策略会上传并适用于另一个租户。延期索赔怎么可能对一个租户有效,而对另一个租户无效?

【问题讨论】:

  • 你能上传失败的策略吗?删除所有敏感信息并上传
  • 我会试试的,谢谢。我刚刚试了一下,它超出了字符数限制...我会看看我是否可以在某个地方链接到它。
  • 我猜你可以上传文件,只需上传你的问题
  • 我已链接到问题内的文档。
  • 我看不到那里的政策,你能重新检查一下吗?

标签: azure-active-directory azure-ad-b2c


【解决方案1】:

在您的基本政策中,dateOfBirth 有以下声明:

<ClaimType Id="extension_DateOfBirth">
    <DisplayName>Date of Birth</DisplayName>
    <DataType>date</DataType>
    <UserHelpText>Date of birth</UserHelpText>
    <UserInputType>DateTimeDropdown</UserInputType>
    <PredicateValidationReference Id="DateOfBirthDateRange" />
</ClaimType>

由于此声明以“extension_”开头,并且在以“AAD-”为前缀的技术配置文件中使用,因此在策略上传期间它将自动创建为 AAD 中的扩展属性。但是,AAD 中不支持数据类型“日期”(仅支持 DateTime)。这导致策略上传失败。

关于如何将 B2C 策略中的“日期”声明映射到 AAD 的“日期时间”属性,我将在对这些策略进行更多调查后回复此线程。

编辑:当我第一次回复但找不到时,我试图找到这个文档:https://msdn.microsoft.com/Library/Azure/Ad/Graph/api/entity-and-complex-type-reference#extensionproperty-entity。感谢马特的分享。希望此链接有助于解决与 AAD 中扩展属性的数据类型相关的问题。

【讨论】:

  • 如果它对任何人都有用,自定义策略架构允许在 &lt;xs:simpleType name="DataType"&gt; 下使用 date 类型。见github.com/Azure-Samples/…。而 Azure AD Graph API 没有,请参阅此处的 dataTypemsdn.microsoft.com/Library/Azure/Ad/Graph/api/…
  • 谢谢尹 - 很好的答案。你是对的。我刚刚尝试将DataType 更改为dateTime,并且能够正确上传策略。但是,在运行策略时,注册页面在点击“创建”后冻结,不再继续。该用户是在 B2C 目录中创建的。我将 DataType 改回 date - 现在我可以正确上传策略并运行策略。奇怪的!我认为这一定是我的开发租户的工作方式。感谢您的努力 - 我发现倾注这些 XML 文件真的很脑痛!
  • 很高兴看到它现在为您的租户工作,尽管它确实很奇怪。我认为这里的原因是与 dataType 日期相关的失败仅在第一次在 AAD 中创建此属性时发生。创建完成后,您可以在以下上传期间将其从 DateTime 更改为 Date。不会因为没有属性创建行为而失败。关于冻结的注册页面,原因可能是当前 userInputType DateTimeDropdown 仅适用于 dataType Date (我知道它看起来不对)。我会看看我能为它做些什么。
【解决方案2】:

扩展属性需要在每个租户的基础上创建。因此,如果您的策略需要扩展属性,则需要显式创建它们。

【讨论】:

  • 当我上传自定义策略时,会在 B2C 扩展应用程序上自动创建扩展属性。根据尹的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-29
  • 1970-01-01
  • 1970-01-01
  • 2020-12-15
  • 1970-01-01
相关资源
最近更新 更多