Вход в систему на основе групп Azure AD и API MS graph - PullRequest
0 голосов
/ 09 мая 2018

У меня есть Angular 4 SPA, веб-API (.net core 2.0) и Azure AD

Мои требования:

1.Ограничить аутентификацию (вход в систему) в SPA только для определенных групп Azure AD Например. У меня есть две группы «Продажи» и «Маркетинг», и если пользователь является членом любой из этих двух групп, то только пользователь должен иметь возможность войти в систему

2. После входа в систему пользователь может выполнять определенные административные операции над другими пользователями с помощью Microsoft Graph API

.

Мой подход

  • Для реализации требования № 1 я собираюсь реализовать Identity Server, который будет взаимодействовать с Azure AD. Затем SPA будет использовать неявный поток для аутентификации с использованием идентификационного сервера в качестве IP
  • Чтобы выполнить требование № 2, я думаю, что мне нужно использовать поток кода авторизации Oauth 2.0 или грант учетных данных клиента OAuth 2.0, и мой веб-API (.net core 2.0) будет действовать как конфиденциальный клиент, который будет иметь свой собственный токен доступа к выполнять административные операции с использованием MS graph API
  • Таким образом, как только пользователь войдет в поток, будет SPA (имеющий токен доступа для авторизации в web api) => Веб-API (имеющий другой токен доступа с высокими привилегиями) => MS graph API => Azure AD

Вопрос

  • Я на правильном пути реализации?
  • Если не могли бы вы, пожалуйста, направить меня в правильном направлении?

1 Ответ

0 голосов
/ 23 мая 2018

Вот как я это решил

Я использовал конечную точку Azure AD V2.0, Angular и .net core 2.0

  1. Получение идентификатора и токена доступа из Azure AD с использованием неявного потока. На данный момент у меня нет информации о группе пользователей
  2. Создание веб-API , защищенного с помощью Azure AD. Он также распознает токен доступа, полученный на шаге 1
  3. Передать токен доступа в API и получить информацию о группе, чтобы решить, может ли пользователь получить доступ к SPA
  4. Реализовано преобразование утверждений и его кэширование в Web API
  5. Создана политика в веб-API для обеспечения доступа к конечным точкам API только членам определенных групп
  6. Веб-API настроен для связи с Graph API с использованием потока предоставления учетных данных клиента
...