Microsoft Graph - получение определенного пользователя c и его членства в группах AD с использованием базы кода Graph SDK - PullRequest
3 голосов
/ 21 марта 2020

Окунитесь в использование Microsoft Graph API для поиска данных в нашем облаке MS - и я застрял. Там так много документации - но никогда не правильной ....

Я пытаюсь использовать C# Graphi client SDK, и я пытаюсь прочитать данные данного пользователя, включая его Членство в группах AD.

Я зарегистрировал свое приложение в Azure AD, и я могу запустить и запустить IPublicClientApplication, а также работает аутентификация:

IPublicClientApplication app = PublicClientApplicationBuilder
                                       .Create(clientId)
                                       .WithTenantId(tenantId)
                                       .Build();

UsernamePasswordProvider authProvider = new UsernamePasswordProvider(app, scopes);

// creating Graph SDK client 
GraphServiceClient graphClient = new GraphServiceClient(authProvider);

string userName = "......";
var securePassword = new SecureString();

// filling secure password here.....

var users = graphClient.Users
                       .Request()
                       .WithUsernamePassword(userName, securePassword)
                       .Filter("userPrincipalName eq 'someone@myorg.com'")
                       .GetAsync().Result;

Это работает - я возвращаю базовые c данные пользователя о пользователе, указанном в фильтре.

Две вещи:

  1. Мне не нравится тот факт, что я должен добавлять .WithUsernamePassword, по-видимому, к каждому отдельному звонку клиенту - разве нет способа включить эту информацию в graphClient один раз и покончить с этим, до того момента, когда я выйду из системы?

  2. Я пытаюсь получить группу членство. Я могу сделать это в Graph Explorer, добавив /MemberOf к моей строке запроса - но я не смог заставить это работать в сценарии клиента Graph SDK.

Я вижу множество блогов, в которых показано, как получить зарегистрированных в настоящее время групп пользователей , используя

graphClient.Me.MemberOf.Request().GetAsync();

, но я не хочу моего членства в группах - я хочу их пользователя, которого я указал в поисковом фильтре, как показано выше.

Попытка простого добавления .Expand("memberOf"), похоже, не помогает - возвращенный объект пользователя по-прежнему не имеет значений в свойстве MemberOf.

Что мне не хватает? Я не могу поверить, что это должно быть так сложно и сложно ?? Или мне действительно нужно прибегнуть к выполнению HTTP GET-запросов к REST API ?? Кажется странным, если MS предоставляет SDK и код клиента ..... Я бы предпочел использовать это, прямо скажем.

...