2017-02-07 9 views
0

У меня есть небольшое приложение, которое я пишу на PHP, где мне нужно проверить, назначен ли данный пользователь назначенной роли. Я использую Azure App Service с аутентификацией службы приложений, которая позволяет аутентифицировать пользователей в активном каталоге azure. В рамках приложения мне нужно получить имя пользователя, отображаемое имя пользователя и если оно входит в одну или несколько из трех групп безопасности, которые они могут быть частью определения того, какие уровни доступа у них есть в приложении.Получить роли пользователя Azure AD в PHP

Мне нужно сделать это таким образом, поскольку я не могу управлять ролями в приложении, вместо этого его нужно управлять с помощью активных групп безопасности. Я ищу метод, который является родным для службы azure app (как в случае, если это возможно, не делает отдельный поиск LDAP, если это возможно). Я знаю, как извлечь аутентифицированное имя пользователя из данных заголовка, отправленных в приложение (HTTP_X_MS_CLIENT_PRINCIPAL_NAME), однако я не знаю, как я могу получить полное отображаемое имя и как проверить, назначены ли пользователю определенные роли. Я уже выдал копию всего суперфайлового массива php $_SERVER, чтобы увидеть, есть ли там данные, которые я ищу, но я не могу найти их там.

Для целей этого вопроса сделать следующие предположения ...

[email protected] назначается роли Role1, роль2, role3
[email protected] назначен роль role3 только

Поэтому, если каждый пользователь регистрируется, мне нужно иметь возможность показать свое полное имя на основе их записи в AD и должны быть в состоянии проверить, являются ли они частью групп безопасности role1role2 и/или role3.

Я бы опубликовал пример моего кода, но я понятия не имею, с чего начать с получения этих данных, поэтому единственным кодом, который я до сих пор является тестовым блоком, чтобы напечатать все значения $_SERVER на странице для целей тестирования.

Благодаря

ответ

0

Вообще говоря, вы можете использовать Microsoft Graph REST APIs лет достигнуть ваше требование.

Прежде всего, вы можете следовать https://graph.microsoft.io/en-us/docs/authorization/app_only, чтобы реализовать функциональные возможности для получения доступа к токену только в приложении, тогда вы можете сделать HTTP-запрос List memberOf, чтобы получить группы и роли в каталогах, к которым пользователь является прямым членом.

HTTP GET url должен быть как https://graph.microsoft.com/v1.0/users/{HTTP_X_MS_CLIENT_PRINCIPAL_NAME you get from header}/memberOf, и установить токен доступа, который вы получите выше в заголовке authorization.

Кроме того, вы можете обратиться к https://github.com/Azure-Samples/active-directory-php-graphapi-directoryextensions-web/blob/master/AuthorizationHelperForGraph.php образцу того, как получить токен доступа только в приложении.

Смежные вопросы