当我尝试上传以下声明时,它失败了:
<ClaimType Id="my-claim">
<DisplayName>My Claim</DisplayName>
<DataType>string</DataType>
<UserHelpText>some text</UserHelpText>
<UserInputType>TextBox</UserInputType>
<Restriction>
<Pattern RegularExpression="^[a-zA-Z0-9.!#$%&'^_`{}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$" HelpText="..." />
</Restriction>
<DefaultPartnerClaimTypes>
<Protocol Name="OAuth2" PartnerClaimType="blah" />
<Protocol Name="OpenIdConnect" PartnerClaimType="blah" />
</DefaultPartnerClaimTypes>
</ClaimType>
出现以下错误:
无法上传政策。原因:验证失败:在租户“mytenant.onmicrosoft.com”的策略“B2C_1A_TRUSTFRAMEWORK_BUILDINGBLOCKS”中发现 1 个验证错误。
在租户“mytenant.onmicrosoft.com”的策略“B2C_1A_TRUSTFRAMEWORK_BUILDINGBLOCKS”第 172 行第 10 行发现架构验证错误:命名空间“http://schemas.microsoft.com/online/cpim/schemas/”中的元素“ClaimType” 2013/06”在命名空间“http://schemas.microsoft.com/online/cpim/schemas/2013/06”中具有无效的子元素“DefaultPartnerClaimTypes”。
预期可能元素的列表:命名空间“http://schemas.microsoft.com/online/cpim/schemas/2013/06”中的“InputValidationReference、PredicateValidationReference”。
如果我移动
<DefaultPartnerClaimTypes>
向上一点,政策就会上传。
<ClaimType Id="my-claim">
<DisplayName>My Claim</DisplayName>
<DataType>string</DataType>
<DefaultPartnerClaimTypes>
<Protocol Name="OAuth2" PartnerClaimType="blah" />
<Protocol Name="OpenIdConnect" PartnerClaimType="blah" />
</DefaultPartnerClaimTypes>
<UserHelpText>some text</UserHelpText>
<UserInputType>TextBox</UserInputType>
<Restriction>
<Pattern RegularExpression="^[a-zA-Z0-9.!#$%&'^_`{}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$" HelpText="..." />
</Restriction>
</ClaimType>
这对我来说似乎不太“正确”。
<ClaimType>
的子级顺序应该不重要,对吗?
该顺序是否在 XSD 文件中指定? (我听说我可以配置 VS Code 来根据 XSD 验证我的 XML,我需要弄清楚如何做到这一点...)
是的,“ClaimType”类型要求将子元素附加到声明的序列中,如XML 模式所定义;否则它不会通过架构验证。
这也适用于此 XML 架构定义的所有其他类型。