Azure AD B2C:从Json Array提取单个项目

时间:2019-04-08 00:33:55

标签: azure transformation azure-ad-b2c

我正在尝试从一组电子邮件地址(存储在otherEmails属性中)中提取一个电子邮件地址。我以为可以使用GetSingleValueFromJsonArray声明转换。但是,出现以下错误:

  

ID为ClaimsTransformation的InputClaims不匹配   带有TransformationMethod的“ GetEmailFromJson”   “ GetSingleValueFromJsonArray”。声明了以下InputClaims   在Policy中,但TransformMethod并不期望:   [StringCollection] inputJsonClaim。以下输入声明是   由TransformMethod期望,但未在Policy中声明:   [String] inputJsonClaim。

它抱怨我的输入是字符串的集合-确实如此。该错误表明它想要一个“字符串”作为输入。该文档还指出,它需要一个字符串。但是,正如名称所暗示的那样,然后我感到困惑,这应该如何与数组一起使用。

基本上,我只想在使用OpenID Connect时在id_token中返回电子邮件地址。但是使用B2C似乎无法设置mail字段,并且在查询时为null。因此,我开始使用otherEmails字段。但是我真的只打算在其中存储一封电子邮件。因此,我想将电子邮件声明作为单值声明而不是数组返回。

更新

经过进一步的挖掘,我意识到无需使用ClaimsTransformation就可以实现我的目标。我可以将'signInNames.emailAddress'映射到'email'。

<OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" PartnerClaimType="email"/>

1 个答案:

答案 0 :(得分:0)

您可以使用the GetSingleItemFromStringCollection claims transformation来获取字符串集合中的第一项。