Как получить информацию о пользователе из Active Directory по адресу электронной почты, используя Microsoft Graph SDK - PullRequest
0 голосов
/ 03 октября 2019

Мы хотели бы получить информацию о пользователе из каталога Azure Active, используя Microsoft Graph SDK.

При наличии действующего адреса электронной почты, но я получаю сообщение об ошибке

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

Код указан ниже. Можете ли вы, пожалуйста, руководство?

IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder.Create(clientId).WithTenantId(tenantID).WithClientSecret(clientSecret).Build();
ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication);
GraphServiceClient graphClient = new GraphServiceClient(authProvider);
var user = await graphClient.Users["myemailaddress@live.com"].Request().GetAsync();

1 Ответ

1 голос
/ 04 октября 2019

Я могу воспроизвести вашу проблему. Учетная запись myemailaddress@live.com является Guest в вашем арендаторе, перейдите к AAD на портале -> найдите учетную запись -> щелкните по ней и выберите Object ID, затем используйте Object ID в коде, он будет работать.

var user = await graphClient.Users["<Object ID>"].Request().GetAsync();

Или вы можете использовать filter, чтобы получить пользователя, в вашем случае формат UserPrincipalName для гостевого пользователя будет похож на myemailaddress_live.com#EXT#@tenantname.onmicrosoft.com, при использовании фильтра мынужно URL закодировать его, тогда это будет myemailaddress_live.com%23EXT%23%40tenantname.onmicrosoft.com, попробуйте код как показано ниже, он работает на моей стороне.

var user = await graphClient.Users.Request().Filter("UserPrincipalName eq 'myemailaddress_live.com%23EXT%23%40tenantname.onmicrosoft.com'").GetAsync();

Обновление :

Если выЕсли вы хотите получить пользователя через UserPrincipalName, вы также можете использовать URL в кодировке, как показано ниже.

var user = await graphClient.Users["myemailaddress_live.com%23EXT%23%40tenantname.onmicrosoft.com"].Request().GetAsync();
...