userPrincipalName нельзя использовать для запроса Graph - PullRequest
0 голосов
/ 25 апреля 2018

В AzureAD мой пользователь имеет следующее имя пользователя: firstName.Surname@live.se

Я предполагаю, что это principalUserName, но когда я запрашиваю Microsoft Graph, он говорит, что его не существует:

https://graph.microsoft.com/v1.0/users/firstName.Surname@live.se

Когда я вместо этого использую id (GUID), я возвращаю user и вижу, что userPrincipalName на самом деле firstName.Surname_live.se#EXT#@firstNameSurnamelive.onmicrosoft.com.

Этот userPrincipalName нельзя использовать для запроса графика. Если я пытаюсь, я получаю сообщение об ошибке

"Ресурс 'firstName.Surname_live.se' не существует или один из его запрашиваемых объектов ссылочных свойств отсутствует."

или

"Ресурс 'live.se' не существует или один из его запрашиваемых объектов ссылочных свойств отсутствует."

Эта учетная запись используется для создания учетной записи Azure. Я использовал существующую электронную почту. Я понимаю, что это причина, по которой он добавляет #EXT#@firstNameSurnamelive.onmicrosoft.com, но как мне использовать это при запросах к Графику? Или, может быть, этот аккаунт не предназначен для этого?

Чтобы обойти это, я мог бы использовать id вместо userPrincipalName для запроса, но я прочитал, что userPrincipalName должно работать. В случае, если я переключаюсь на id, как мне его получить? Пользователь был создан в процессе авторизации?

1 Ответ

0 голосов
/ 25 апреля 2018

Адрес firstName.Surname@live.se - это не учетная запись AAD, это учетная запись Microsoft для потребителей (она же Outlook.com, XBox Live). Вы видите userPrincipalName из firstName.Surname_live.se#EXT#@firstNameSurnamelive.onmicrosoft.com, потому что они являются гостем в вашем клиенте AAD.

Причина, по которой вы получаете эту ошибку, состоит в том, что firstName.Surname_live.se#EXT#@firstNameSurnamelive.onmicrosoft.com содержит зарезервированные символы, которые должны быть закодированы в URL. В частности, # вызывает проблемы, поскольку означает начало фрагмента URI. Фрагменты полностью на стороне клиента и не отправляются на сервер ; то есть Microsoft Graph буквально ничего не получает после firstname.surname_live.se.

Чтобы решить эту проблему, URL закодируйте userPrincipalName, чтобы он стал firstName.Surname_live.se%23EXT%23%40firstNameSurnamelive.onmicrosoft.com. Затем вы можете использовать его для правильного вызова в Microsoft Graph:

/v1.0/users/firstName.Surname_live.se%23EXT%23%40firstNameSurnamelive.onmicrosoft.com
...