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

Azure B2C:能否在ClaimsTransformation中使用Claims Resolvers?

能否在ClaimsTransformation中使用Claims Resolvers?

直接在ClaimsTransformation的InputClaim或InputParameter里使用Claims Resolvers(比如{Culture:LanguageCode})是不支持的——Claims Resolvers的解析逻辑仅在用户旅程/技术配置文件的顶层InputClaims中生效,ClaimsTransformation内部的输入只能依赖已存在的声明值。

不过可以通过以下间接方式实现动态生成语言相关的template_id:

步骤1:通过Claims Resolver获取语言代码声明

在调用ClaimsTransformation的技术配置文件(TechnicalProfile)中,添加InputClaim,用Claims Resolver把语言代码存入新声明:

<TechnicalProfile Id="YourTechnicalProfile">
  <!-- 其他配置 -->
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="email" />
    <!-- 新增:将语言代码存入cultureLanguageCode声明 -->
    <InputClaim ClaimTypeReferenceId="cultureLanguageCode" DefaultValue="{Culture:LanguageCode}" />
  </InputClaims>
</TechnicalProfile>

步骤2:创建字符串拼接的ClaimsTransformation

新增转换,把固定前缀template-和语言代码声明拼接成最终的template_id值:

<ClaimsTransformations>
  <!-- 新增:拼接生成templateId -->
  <ClaimsTransformation Id="BuildTemplateId" TransformationMethod="FormatString">
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="cultureLanguageCode" TransformationClaimType="inputClaim" />
    </InputClaims>
    <InputParameters>
      <InputParameter Id="stringFormat" DataType="string" Value="template-{0}" />
    </InputParameters>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="templateId" TransformationClaimType="outputClaim" />
    </OutputClaims>
  </ClaimsTransformation>

  <!-- 修改后的GenerateRequest转换 -->
  <ClaimsTransformation Id="GenerateRequest" TransformationMethod="GenerateJson">
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="email_address" />
      <InputClaim ClaimTypeReferenceId="templateId" TransformationClaimType="template_id" />
    </InputClaims>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="emailRequestBody" TransformationClaimType="outputClaim" />
    </OutputClaims>
  </ClaimsTransformation>
</ClaimsTransformations>

步骤3:按顺序执行转换

在技术配置文件中确保先执行拼接转换,再执行生成JSON的转换:

<TechnicalProfile Id="YourTechnicalProfile">
  <!-- 其他配置 -->
  <InputClaims>
    <!-- 步骤1的输入声明 -->
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="emailRequestBody" />
  </OutputClaims>
  <ClaimsTransformations>
    <ClaimsTransformationReference Id="BuildTemplateId" />
    <ClaimsTransformationReference Id="GenerateRequest" />
  </ClaimsTransformations>
</TechnicalProfile>

原有配置失效原因

ClaimsTransformation内部InputClaim的DefaultValue不会触发Claims Resolvers的解析,只有在用户旅程或技术配置文件的顶层InputClaims/OutputClaims中设置的DefaultValue才会解析Claims Resolvers,因此必须先把解析后的值存入声明,再在后续转换中调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 04:09:22