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

Azure AD B2C API连接器ISO-8601字符串转DateTime报错问题

问题解决:Azure AD B2C自动将ISO-8601字符串声明转为DateTime导致类型冲突

问题本质

Azure AD B2C内置了声明类型自动解析逻辑:当REST API返回的字符串符合ISO-8601日期时间格式时,会自动将其识别为DateTime类型,哪怕你在策略的ClaimType中明确将该声明定义为String类型,这就会触发AADB2C99072类型不匹配错误——因为自定义用户属性仅支持String/Int/Boolean,无法存储DateTime类型值。这不是Bug,是B2C为兼容多场景设计的默认行为。

解决方法:规避自动解析

通过对API返回的日期字符串做微小修改,绕过B2C的自动DateTime识别,再在策略中还原原始字符串:

步骤1:修改REST API响应

在返回的ISO-8601字符串末尾添加一个非日期格式的后缀(比如_str),让B2C无法将其识别为DateTime:

{
  "version": "1.0.0",
  "action": "continue",
  "extension_<ApplicationID>_LastLoginDate": "2023-09-29T12:04:26.7639519Z_str"
}

步骤2:在B2C策略中添加声明转换

添加一个ReplaceClaimValue类型的ClaimsTransformation,用来去掉后缀,还原原始ISO字符串:

<ClaimsTransformation Id="StripLastLoginDateSuffix" TransformationMethod="ReplaceClaimValue">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="extension_LastLoginDate" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="oldValue" DataType="string" Value="_str" />
    <InputParameter Id="newValue" DataType="string" Value="" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="extension_LastLoginDate" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>

步骤3:关联转换到REST技术配置

在调用该API的TechnicalProfile中,添加输出声明转换,确保拿到返回值后立即执行后缀剥离:

<TechnicalProfile Id="REST-UpdateLastLogin">
  <!-- 原有配置(如Metadata、InputClaims等) -->
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="extension_LastLoginDate" PartnerClaimType="extension_<ApplicationID>_LastLoginDate" />
  </OutputClaims>
  <OutputClaimsTransformations>
    <OutputClaimsTransformation ReferenceId="StripLastLoginDateSuffix" />
  </OutputClaimsTransformations>
</TechnicalProfile>

补充说明

如果无法修改REST API的返回内容,另一种思路是先将API返回的声明映射到一个临时的String类型声明(确保该声明的ClaimType未被B2C自动解析),再通过ClaimsTransformation将其复制到目标用户属性声明中,但这种方法可靠性低于前者,因为B2C可能在初始解析时就已触发类型错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 16:24:58