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

使用ClaimsTransformation在B2C生成额外odata.type属性问题排查

为什么B2C数据库会生成带@odata.type的额外属性?

这个问题其实挺常见的,先给你吃个定心丸:你并没有操作错误,这个额外属性是Azure AD B2C处理强类型声明时的默认行为。

原因解析

当你使用GetCurrentDateTime这类返回特定数据类型的ClaimsTransformation方法,并且把结果写入一个扩展属性时,B2C会自动添加[属性名]@odata.type这个字段,用来明确声明的数据类型(这里是Edm.DateTime)。这么做是为了确保后续通过Graph API读取或者其他流程处理这个属性时,系统能准确识别它的类型,避免类型解析错误。

两种处理方式

如果你不想保留这个额外属性,可以试试下面两种方案:

1. 将DateTime转换为字符串存储

修改你的ClaimsTransformation流程,先把获取到的当前时间转成字符串格式,再写入扩展属性。这样B2C就不会添加类型标识属性了。
首先添加一个转换字符串的ClaimsTransformation:

<ClaimsTransformation Id="ConvertConsentDateTimeToString" TransformationMethod="ConvertDateTimeToString">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="tempCurrentDateTime" TransformationClaimType="inputDateTime" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="dateTimeFormat" DataType="string" Value="yyyy-MM-ddTHH:mm:ss.fffffffZ" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="extension_TOUAcceptedDateTime" TransformationClaimType="outputString" />
  </OutputClaims>
</ClaimsTransformation>

然后调整你的流程,先获取时间,再转换:

<InputClaimsTransformations>
  <InputClaimsTransformation ReferenceId="GetConsentDateTime" />
  <InputClaimsTransformation ReferenceId="ConvertConsentDateTimeToString" />
</InputClaimsTransformations>

<!-- 对应的GetConsentDateTime修改为输出到临时声明 -->
<ClaimsTransformation Id="GetConsentDateTime" TransformationMethod="GetCurrentDateTime">
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="tempCurrentDateTime" TransformationClaimType="currentDateTime" />
  </OutputClaims>
</ClaimsTransformation>

同时记得把extension_TOUAcceptedDateTime的ClaimType定义改成string类型:

<ClaimType Id="extension_TOUAcceptedDateTime">
  <DisplayName>TOU Accepted DateTime</DisplayName>
  <DataType>string</DataType>
</ClaimType>

2. 接受该属性的存在

其实这个@odata.type属性完全不会影响用户数据的正常使用——它只是B2C用来辅助类型解析的元数据。当你在应用程序中读取用户数据时,只需要过滤掉带有@odata.type后缀的键就可以了,核心的日期值extension_0428f3354957491e96bb7ce51b81d46a_TOUAcceptedDateTime依然是可用的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:06:04