Программно получить группу пользователей и роль из Azure AD - PullRequest
0 голосов
/ 25 февраля 2019

Я новичок в лазурной AD.

У меня есть сторонний API, который дает мне идентификатор пользователя.Я написал .NET Core API, который должен взять этот идентификатор пользователя и получить роли и группы этого конкретного пользователя.

Я прочитал об API графа Microsoft.Не уверен, что это полезно в моем сценарии.

Также есть ли другой способ программного доступа к ролям и группам пользователя AD.

1 Ответ

0 голосов
/ 25 февраля 2019

Какой API использовать для получения групп и информации о ролях

Во-первых, Microsoft Graph API - это ваш лучший выбор для получения информации, которую вы ищете.

Какой именно API работает для вас лучше всего, зависит от вашего сценария (а. Вам нужно прямое членство или транзитивная проверка верхнего уровня? Б. Вам нужны только группы безопасности или даже группы O365?), Так что вы лучший судья.

Я перечислю здесь 3 из них, и у вас есть несколько идей для выбора.

  • memberOf -

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

    ПРИМЕЧАНИЕ: для этого имеет значение только прямое членство, установите флажок НЕ переходный (т. Е. Пользователь должен быть прямым членом группы для этой группы, которая должна быть возвращена. Если пользователь является членомgroup1, но эта group1 является членом group2, тогда group2 НЕ будет возвращено. Такое поведение может быть нормальным для некоторых сценариев, но не для других)

    GET /users/{id | userPrincipalName}/memberOf
    
  • getMemberGroups

    POST /users/{id | userPrincipalName}/getMemberGroups
    

    Возвращает все группы, в которые входит пользователь.Проверьте, что это Transitive , так что вы уверены, что все группы будут возвращены.До 2046 года возвращается как часть 1 запроса.Он также работает с группами O365, и вы можете фильтровать группы SecurityEnabled, используя параметр

  • getMemberObjects

    Возвращает все группы, роли каталогови административные единицы, членом которых является пользователь.Проверка снова транзитивная .

Реализация и пример кода. Как получить токен, вызвать API и т. Д.

  • Получение токена для аутентификации

    Вы должны использовать библиотеки MSAL или ADAL в зависимости от того, какую конечную точку Azure AD вы используете MSAL для v2 и ADAL для v1.Использование этих библиотек не является обязательным, но рекомендуется, потому что они будут следовать передовым методам и выполнять тяжелую работу за вас.

  • Взаимодействие с конечными точками Microsoft Graph API

    Поскольку вы пишете в .NET, вы можете использовать Клиентская библиотека Microsoft Graph для .NET (SDK) .Опять же, не обязательно использовать клиентскую библиотеку, но это сделает ваш код более декларативным и будет удобным.Вы всегда можете работать с HttpClient и напрямую обращаться к конечным точкам REST, если хотите.

  • Пример кода

    Образец Microsoft Graph Connect дляASP.NET Core 2.1

    Важные части. Посмотрите в файле GraphService.cs методы, которые получают информацию о пользователе, например,

      // Load user's profile in formatted JSON.
        public static async Task<string> GetUserJson(GraphServiceClient graphClient, string email, HttpContext httpContext)
            {
                if (email == null) return JsonConvert.SerializeObject(new { Message = "Email address cannot be null." }, Formatting.Indented);
    
                try
                {
                    // Load user profile.
                    var user = await graphClient.Users[email].Request().GetAsync();
                    return JsonConvert.SerializeObject(user, Formatting.Indented);
                }
    

    ПРИМЕЧАНИЕ. В примере используются делегированныеразрешения.Возможно, вам придется использовать разрешения приложения напрямую или от имени потока (если вы хотите сделать это в контексте пользователя), поскольку вы упоминаете, что у вас вызывается API.Кроме того, это только один из примеров, на который вам следует обратить внимание, чтобы понять, как работать с SDK, но многие из них станут доступны, как только вы начнете изучать Microsoft Graph API и документацию клиентской библиотеки.Я обновлю ответ, если найду пример, более близкий к вашему точному сценарию.

...