Окунитесь в использование 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 данные пользователя о пользователе, указанном в фильтре.
Две вещи:
Мне не нравится тот факт, что я должен добавлять .WithUsernamePassword
, по-видимому, к каждому отдельному звонку клиенту - разве нет способа включить эту информацию в graphClient
один раз и покончить с этим, до того момента, когда я выйду из системы?
Я пытаюсь получить группу членство. Я могу сделать это в Graph Explorer, добавив /MemberOf
к моей строке запроса - но я не смог заставить это работать в сценарии клиента Graph SDK.
Я вижу множество блогов, в которых показано, как получить зарегистрированных в настоящее время групп пользователей , используя
graphClient.Me.MemberOf.Request().GetAsync();
, но я не хочу моего членства в группах - я хочу их пользователя, которого я указал в поисковом фильтре, как показано выше.
Попытка простого добавления .Expand("memberOf")
, похоже, не помогает - возвращенный объект пользователя по-прежнему не имеет значений в свойстве MemberOf
.
Что мне не хватает? Я не могу поверить, что это должно быть так сложно и сложно ?? Или мне действительно нужно прибегнуть к выполнению HTTP GET-запросов к REST API ?? Кажется странным, если MS предоставляет SDK и код клиента ..... Я бы предпочел использовать это, прямо скажем.