【发布时间】:2020-05-19 12:07:12
【问题描述】:
我需要获取用户的出生日期以仅使用日期(没有时间)进行注册 - 场景 1。
但是在同一策略中的另一个场景流中,我有一个 URL 参数(一个令牌),我将使用它调用一个 REST API 并从另一个应用程序获取用户信息。在这种情况下,我编写了 REST API 来获取第三方数据并返回到 b2c 自定义策略。
我创建了一个数据类型为“日期”的出生日期声明,它适用于场景 1,它通过自断言输入从用户那里获取出生日期。
<ClaimType Id="dateOfBirth">
<DisplayName>Date of Birth</DisplayName>
<DataType>date</DataType>
<DefaultPartnerClaimTypes>
<Protocol Name="OAuth2" PartnerClaimType="birth_date" />
<Protocol Name="OpenIdConnect" PartnerClaimType="birth_date" />
<Protocol Name="SAML2" PartnerClaimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/birthdate" />
</DefaultPartnerClaimTypes>
<UserInputType>DateTimeDropdown</UserInputType>
<PredicateValidationReference Id="CustomDateRange" />
</ClaimType>
但对于场景 2,REST API 只能以 DateTime 或字符串的形式返回。当我尝试执行 REST API 将 dateOfBirth 作为字符串返回的策略时,当 REST API 返回值时,B2C 会引发错误 - 在 AppInsights 中我看到:
id 为“dateOfBirth”的声明的数据类型“String”与策略中指定的 ID 为“dateOfBirth”的 ClaimType 的数据类型“Date”不匹配
如果我将 REST API dateOfBirth 更改为 DateTime,那么它会抛出如下:
ID 为“dateOfBirth”的声明的数据类型“DateTime”与策略中指定的 ID 为“dateOfBirth”的 ClaimType 的数据类型“Date”不匹配。
有人可以帮忙吗?
提前致谢。
【问题讨论】:
-
对我来说也一样。 @Logu 找到解决方案了吗?
标签: rest datetime types azure-ad-b2c