Azure AD B2C自定义策略<ClaimsTransformations>架构验证错误求助
Azure AD B2C自定义策略上传时ClaimsTransformations架构验证错误问题
上传Azure AD B2C自定义策略时,持续遇到与<ClaimsTransformations>部分相关的架构验证错误,错误信息不固定,但常见提示:
命名空间'http://schemas.microsoft.com/online/cpim/schemas/2013/06'中的元素'ClaimsTransformation'包含无效子元素'InputClaims',预期元素为'OutputClaims'。
关键细节
- 错误指向的行不固定,但始终提示某些转换方法中
<InputClaims>是无效子元素 - 已确认CopyClaim、FormatStringMultipleClaims、BuildUri等方法按文档要求使用
<InputClaims>和<OutputClaims> - CreateOtpSecret、CreateStringClaim、FormatStringClaim等方法仅使用
<OutputClaims>(必要时搭配<InputParameters>),未使用<InputClaims> - 即便XML符合架构规范,错误仍持续出现
已尝试操作
- 反复检查所有
<ClaimsTransformation>块,确认<InputClaims>、<OutputClaims>、<InputParameters>使用正确 - 移除了不支持
<InputClaim>的转换方法中的对应元素 - 验证XML结构,确保无重复或错位元素
相关代码片段
<!-- ===== Transformations ===== --> <ClaimsTransformations> <ClaimsTransformation Id="CopyObjectIdToUserId" TransformationMethod="CopyClaim"> <OutputClaims> <OutputClaim ClaimTypeReferenceId="objectId" TransformationClaimType="inputClaim" /> <OutputClaim ClaimTypeReferenceId="userId" TransformationClaimType="outputClaim" /> </OutputClaims> </ClaimsTransformation> <ClaimsTransformation Id="CopyInviteTokenToSecretKey" TransformationMethod="CopyClaim"> <OutputClaims> <OutputClaim ClaimTypeReferenceId="extension_d370edc869fd4e23ba22efa407bd8935_InviteToken" TransformationClaimType="inputClaim" /> <OutputClaim ClaimTypeReferenceId="secretKey" TransformationClaimType="outputClaim" /> </OutputClaims> </ClaimsTransformation> <ClaimsTransformation Id="CreateIssuer" TransformationMethod="FormatStringClaim"> <InputParameters> <InputParameter Id="stringFormat" DataType="string" Value="{0}" /> </InputParameters> <InputClaims> <InputClaim ClaimTypeReferenceId="totpIssuer" TransformationClaimType="inputClaim" /> </InputClaims> <OutputClaims> <OutputClaim ClaimTypeReferenceId="totpIdentifier" TransformationClaimType="outputClaim" /> </OutputClaims> </ClaimsTransformation> <ClaimsTransformation Id="FormatTotpLabel" TransformationMethod="FormatStringMultipleClaims"> <InputParameters> <InputParameter Id="stringFormat" DataType="string" Value="{0}:{1}" /> </InputParameters> <InputClaims> <InputClaim ClaimTypeReferenceId="totpIdentifier" TransformationClaimType="inputClaim1" /> <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="inputClaim2" /> </InputClaims> <OutputClaims> <OutputClaim ClaimTypeReferenceId="totpLabel" TransformationClaimType="outputClaim" /> </OutputClaims> </ClaimsTransformation> <ClaimsTransformation Id="CreateQrCodeUri" TransformationMethod="BuildUri"> <InputParameters> <InputParameter Id="scheme" DataType="string" Value="otpauth" /> <InputParameter Id="path" DataType="string" Value="totp" /> </InputParameters> <InputClaims> <InputClaim ClaimTypeReferenceId="totpLabel" TransformationClaimType="label" /> <InputClaim ClaimTypeReferenceId="secretKey" TransformationClaimType="secret" /> <InputClaim ClaimTypeReferenceId="totpIssuer" TransformationClaimType="issuer" /> </InputClaims> <OutputClaims> <OutputClaim ClaimTypeReferenceId="qrCodeContent" TransformationClaimType="outputClaim" /> </OutputClaims> </ClaimsTransformation> </ClaimsTransformations> <!-- ===== Content definitions ===== -->
内容的提问来源于stack exchange,提问作者Ret 2
相关产品推荐
相关产品推荐

