【问题标题】:Azure AD B2C: Extract single item from Json ArrayAzure AD B2C:从 Json 数组中提取单个项目
【发布时间】:2019-04-08 00:33:54
【问题描述】:

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

ClaimsTransformation 中的 InputClaims 与 id 不匹配 带有 TransformationMethod 的“GetEmailFromJson” “GetSingleValueFromJsonArray”。声明了以下 InputClaims 在策略中但不是 TransformMethod 所期望的: [StringCollection]inputJsonClaim。以下 InputClaims 是 TransformMethod 预期但未在 Policy 中声明: [字符串]inputJsonClaim。

它抱怨我的输入是字符串的集合——它就是这样。该错误表示它需要一个“字符串”作为输入。该文档还声明它需要一个字符串。但是,顾名思义,我很困惑这应该如何与数组一起使用。

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

更新

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

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

【问题讨论】:

    标签: azure transformation azure-ad-b2c


    【解决方案1】:

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

    【讨论】:

    • 啊,当然。我没有 JSON。我已经有一个数组对象。这个例子是我想要使用的领域。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2017-01-09
    • 2020-04-11
    • 2023-03-06
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    相关资源
    最近更新 更多