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

如何在B2C自定义策略中移除字符串中的短横线(-)?

在Azure AD B2C自定义策略中移除ClientID的短横线

你可以通过自定义策略的**声明转换(Claims Transformation)**实现需求,核心是用ReplaceAll方法替换所有短横线。具体步骤如下:

1. 声明目标ClaimType

在策略的<BuildingBlocks> -> <ClaimsSchema>中添加用于存储无短横线ClientID的声明类型:

<ClaimType Id="clientIdWithoutDashes">
  <DisplayName>无短横线的Client ID</DisplayName>
  <DataType>string</DataType>
</ClaimType>

2. 创建移除短横线的声明转换

在<BuildingBlocks> -> <ClaimsTransformations>中添加转换规则,将原始带短横线的ClientID(假设声明ID为clientId)中的-替换为空字符串:

<ClaimsTransformation Id="RemoveDashesFromClientId" TransformationMethod="ReplaceAll">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="clientId" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="oldValue" DataType="string" Value="-" />
    <InputParameter Id="newValue" DataType="string" Value="" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="clientIdWithoutDashes" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>

3. 配置调用转换的技术配置文件

在<ClaimsProviders>中添加技术配置文件,触发上述声明转换:

<ClaimsProvider>
  <DisplayName>Client ID转换</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="RemoveDashesFromClientIdProfile">
      <DisplayName>移除ClientID中的短横线</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="clientIdWithoutDashes" />
      </OutputClaims>
      <OutputClaimsTransformations>
        <OutputClaimsTransformation ReferenceId="RemoveDashesFromClientId" />
      </OutputClaimsTransformations>
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

4. 在用户旅程中调用该转换

在用户旅程(<UserJourneys>)的合适编排步骤中添加调用逻辑:

<OrchestrationStep Order="2" Type="ClaimsExchange">
  <ClaimsExchanges>
    <ClaimsExchange Id="TransformClientId" TechnicalProfileReferenceId="RemoveDashesFromClientIdProfile" />
  </ClaimsExchanges>
</OrchestrationStep>

补充:获取当前ClientID(如果需要)

如果策略中未获取原始ClientID,可添加GetClientId声明转换来获取:

<ClaimsTransformation Id="GetClientId" TransformationMethod="GetClientId">
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="clientId" TransformationClaimType="clientId" />
  </OutputClaims>
</ClaimsTransformation>

将此转换添加到上述技术配置文件的<OutputClaimsTransformations>中,确保先获取原始clientId再执行替换。

完成配置后,clientIdWithoutDashes声明将存储无短横线的ClientID值,可直接用于后续步骤(如API调用参数、用户属性存储等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 04:46:13