You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure B2C自定义策略:FormatStringMultipleClaims空声明默认值配置问题

解决Azure B2C自定义策略中FormatStringMultipleClaims默认值配置问题

核心方案

FormatStringMultipleClaims本身不支持直接为输入声明设置默认值,需要通过前置声明转换先补全缺失的声明值,再传入该转换处理。

具体实现步骤

1. 定义补全默认值的声明转换

创建一个自定义转换,当surName声明为空或不存在时,自动填充默认值:

<ClaimsTransformation Id="AddDefaultSurNameIfMissing" TransformationMethod="AddItemToStringCollection">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="surName" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="item" DataType="string" Value="Unknown" />
    <InputParameter Id="checkExists" DataType="boolean" Value="true" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="surName" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>

其中checkExists设为true,确保仅在声明缺失时才填充默认值,不会覆盖已有有效值。

2. 在用户旅程中先执行补全转换

在调用FormatStringMultipleClaims的步骤之前,先执行上述补全转换,保证surName总有值:

<OrchestrationStep Order="X" Type="ClaimsExchange">
  <ClaimsExchanges>
    <ClaimsExchange Id="SetDefaultSurName" TechnicalProfileReferenceId="TP-SetDefaultClaims" />
  </ClaimsExchanges>
</OrchestrationStep>

对应的技术配置文件:

<TechnicalProfile Id="TP-SetDefaultClaims">
  <DisplayName>Set default values for missing claims</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="surName" />
  </OutputClaims>
  <ClaimsTransformations>
    <ClaimsTransformationReferenceId="AddDefaultSurNameIfMissing" />
  </ClaimsTransformations>
</TechnicalProfile>

3. 正常调用FormatStringMultipleClaims

此时surName已确保有值,直接使用该转换即可避免流程失败:

<ClaimsTransformation Id="FormatFullName" TransformationMethod="FormatStringMultipleClaims">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="givenName" TransformationClaimType="inputClaim1" />
    <InputClaim ClaimTypeReferenceId="surName" TransformationClaimType="inputClaim2" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="stringFormat" DataType="string" Value="{0} {1}" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="displayName" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>

关键注意点

  • 不要直接给FormatStringMultipleClaims的InputClaim添加DefaultValue属性,该转换不支持此配置,会引发XML解析错误。
  • 若需要为多个声明设置默认值,可复制上述补全转换结构,修改对应的声明类型和默认值即可。

内容的提问来源于stack exchange,提问作者366Cobra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 17:33:10