Электронное письмо для регистрации Azure B2C отсутствует в Microsoft Graph API?

#azure #microsoft-graph-api #azure-ad-b2c

#azure #microsoft-graph-api #azure-ad-b2c

Вопрос:

У нас есть клиент, где мы используем Azure B2C для обработки входов в разрабатываемый нами клиентский портал. Когда мы создаем пользователя, мы можем выбрать, какой тип входа мы хотели бы использовать. Здесь мы выбираем «Электронная почта» и завершаем регистрацию.

В API мы получаем всех пользователей через Microsoft Graph API, и ни одно из возвращаемых полей не содержит «Адрес электронной почты», который мы выбрали при регистрации пользователя.

При запуске /me/ через Graph API мы видим, что поле «Почта» заполнено, но не при запросе /users/.

userPrincipalName отображает правильное электронное письмо при просмотре пользователя в панели управления Azure B2C. Но запрос Graph API показывает userPrincipalName как {guid}@{tenant}.onmicrosoft.com .

Кроме того, свойство электронной почты пусто и отключено в Azure B2C.

Как мне извлечь «Электронное письмо», используемое при регистрации нового пользователя в Azure B2C, с помощью Microsoft Graph API?

Скриншот, показывающий до и после регистрации

Ответ от Microsoft Graph API:

 {Microsoft.Graph.User}  Microsoft.Graph.User
    DisplayName "MyEmail Test"  
    Id  "c04b6e19-503c-4035-b2ab-c763765b8e4c"  
    ODataType   "microsoft.graph.user"  
    UserPrincipalName   "916863de-42ac-449e-bec6-6f59d706c870@{tenant}.onmicrosoft.com" 
  

Комментарии:

1. Используя бета-версию Microsoft Graph API, вы можете извлечь подробности: graph.microsoft.com/beta/users ?$filter=identities/any(x: x /… eq ‘Адрес электронной почты’ и c / eq эмитента ‘xx.onmicrosoft.com ‘)

Ответ №1:

Адрес электронной почты добавляется к signInNames свойству объекта user, но свойство signInNames недоступно в Graph API.

Вы можете получить электронное письмо пользователя Azure AD B2C с помощью коллекции удостоверений, используя приведенный ниже запрос.

 https://graph.microsoft.com/beta/users/userid?select=identities
  

Что касается mail атрибута пользователя, он хранит адрес SMTP для пользователя. Пример: когда вы отправляете приглашение пользователя B2C (код подтверждения для его почтового ящика), электронное письмо пользователя добавляется в атрибут mail.

Пожалуйста, обратитесь к документу пользовательских атрибутовhttps://learn.microsoft.com/en-us/azure/active-directory-b2c/user-profile-attributes

Комментарии:

1. Использование бета-версии SDK предоставило необходимые поля. Спасибо!

2. Azure определенно нуждается в улучшении. Должна существовать возможность поиска и фильтрации пользователей на основе свойства signInNames. Мне пришлось создать довольно сложный алгоритм для перебора структуры вложенного массива всех идентификаторов коллекции пользователей, чтобы получить идентификатор пользователя или основное имя пользователя из определенного электронного письма signInNames. Должен быть лучший способ.