Azure AD B2C: извлечение одного элемента из массива Json

Я пытаюсь извлечь один адрес электронной почты из массива адресов электронной почты (хранящихся в атрибуте otherEmails). Я подумал, что могу использовать преобразование утверждений GetSingleValueFromJsonArray. Но я получаю следующую ошибку:

The InputClaims mismatched in ClaimsTransformation with id "GetEmailFromJson" with TransformationMethod "GetSingleValueFromJsonArray". The following InputClaims were declared in the Policy but were not expected by the TransformMethod: [StringCollection]inputJsonClaim. The following InputClaims were expected by the TransformMethod but were not declared in the Policy: [String]inputJsonClaim.

Он жалуется, что мой ввод представляет собой набор строк, которым он и является. Ошибка говорит, что она хочет "строку" в качестве ввода. В документации также указано, что требуется строка. Но потом я не понимаю, как это должно работать с массивом, как следует из названия.

По сути, я просто хочу вернуть адрес электронной почты в id_token при использовании OpenID Connect. Но с B2C кажется, что я не могу установить поле почты, и когда я запрашиваю его, оно равно нулю. Итак, я начал использовать поле otherEmails. Но я действительно планирую хранить в нем только одно электронное письмо. Таким образом, я хочу вернуть утверждение электронной почты как утверждение с одним значением, а не массив.

Обновлять

Немного покопавшись, я понял, что могу достичь своей цели без использования ClaimsTransformation. Я могу просто сопоставить «signInNames.emailAddress» с «электронной почтой».

<OutputClaim ClaimTypeReferenceId = "signInNames.emailAddress" PartnerClaimType = "email"/>
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
548
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать преобразование утверждений GetSingleItemFromStringCollection для получения первого элемента в коллекции строк.

Ах, конечно. У меня нет JSON. У меня уже есть объект массива. И пример того поля, которое я хочу использовать. Спасибо!

anschoewe 08.04.2019 03:52

Другие вопросы по теме