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

问题描述 投票:0回答:1

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

InputClaims与ClaimsTransformation不匹配,ID为“GetEmailFromJson”,其中包含TransformationMethod“GetSingleValueFromJsonArray”。在Policy中声明了以下InputClaims,但TransformMethod并未预期:[StringCollection] inputJsonClaim。 TransformMethod期望以下InputClaims,但未在Policy中声明:[String] inputJsonClaim。

它抱怨我的输入是字符串的集合 - 它是。错误说它想要一个'字符串'作为输入。该文档还声明它需要一个字符串。但是后来我很困惑这个应该如何使用数组,顾名思义。

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

Update

经过一番挖掘,我意识到我可以在不使用ClaimsTransformation的情况下完成目标。我可以将'signInNames.emailAddress'映射到'email'。

<OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" PartnerClaimType="email"/>
azure transformation azure-ad-b2c
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.