我正在尝试从一组电子邮件地址(存储在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"/>