Группы пользователей в качестве заявок через OpenID Connect через ADFS - PullRequest
2 голосов
/ 03 апреля 2019

Мне нужна помощь в выяснении того, как я могу получить назначенные пользователю группы через OpenID Connect через ADFS (Windows Server 2016).В настоящее время я могу аутентифицировать пользователя и получить информацию о пользователе, включая access_token.Когда я проверяю JWT-токен, я вижу все утверждения по умолчанию.Я хочу добавить все системные группы пользователей в заявки в виде массива строк, но я понятия не имею, как этого добиться.ADFS и Windows Server - чудовище, и все результаты поиска от Google не ведут меня в правильном направлении.Все статьи, которые я нахожу, бесполезны, поскольку они либо неполны в действиях, либо трудны для понимания, если вы не обучены всему ADFS-шебангу.

Я застрял в этой проблемепару дней и мне нужна помощь, надеюсь, есть кто-то, кто знает об этом.

Что я уже сделал:

  1. Я добавил группу приложений в ADFSкоторая содержит «Серверное приложение» и «Веб-API».
  2. Я добавил группу пользователей с именем Admin и назначил ее пользователю с именем max.
  3. Я могу войти через OpenID Connect черезADFS и получить информацию о пользователе от конечной точки userinfo.
  4. Мне удалось декодировать access_token для доступа к утверждениям.

В настоящее время я аутентифицируюсь с областями действия "openid"," электронная почта "и" профиль ".

Ответы [ 2 ]

3 голосов
/ 08 апреля 2019

У нас просто все работает, поэтому я подумал, что поделюсь тем, что мы сделали, если кто-то захочет сделать то, что мы сделали.

Предпосылки

Чтобы выполнить следующие действия, вам потребуется Windows Server 2016 или более поздняя версия с включенной функцией «Службы федерации Active Directory (ADFS)».

Добавление конфигурации OpenID Connect в ADFS

  1. Откройте инструмент «Управление AD FS», расположенный в меню «Сервис» в правом верхнем углу диспетчера сервера.
  2. Выберите элемент папки «Группы приложений» на левой боковой панели.
  3. Нажмите «Добавить группу приложений ...» на боковой панели справа.
  4. Дайте группе приложений имя, например «OpenID Connect»
  5. Выберите элемент списка «Серверное приложение, обращающееся к веб-API» и нажмите «Далее».
  6. Скопируйте и вставьте Идентификатор клиента в текстовый файл для последующего использования.
  7. Введите вашу аутентификацию "Redirect URI" и нажмите "Далее".
  8. Установите флажок «Создать общий секрет». Скопируйте и вставьте Secret в текст для использования с вашим приложением. Нажмите далее.
  9. Вставьте и добавьте Идентификатор клиента (из шага 6) в качестве «Идентификатора». Нажмите далее.
  10. Выберите политику управления доступом, которую вы хотите использовать, и нажмите «Далее».
  11. Убедитесь, что флажок рядом с "openid" отмечен.
  12. Нажмите кнопку «Новая область действия» внизу и назовите ее «allatclaims», нажмите кнопку «ОК». Эта область необходима для предоставления дополнительной информации в виде утверждений, таких как группы пользователей.
  13. Завершите работу мастера.

Настройка OpenID Connect для предоставления групп пользователей в качестве утверждений

  1. Откройте инструмент «Управление AD FS», расположенный в меню «Сервис» в правом верхнем углу диспетчера сервера.
  2. Выберите элемент папки «Группы приложений» на левой боковой панели.
  3. Дважды щелкните ранее добавленную группу, затем дважды щелкните приложение "Web API".
  4. Выберите вкладку под названием «Правила преобразования выдачи».
  5. Нажмите кнопку «Добавить правило ...» внизу.
  6. Выберите «Отправить атрибуты LDAP в качестве утверждений» и нажмите «Далее».
  7. Дайте правилу имя, например, "Роли".
  8. Выберите «Active Directory» в качестве «Хранилища атрибутов».
  9. В таблице ниже выберите «Безусловные имена групп токенов» в первом столбце и введите «роли» во втором столбце.

Настройка OpenID Connect для предоставления определенных групп пользователей в качестве утверждений

  1. Откройте инструмент «Управление AD FS», расположенный в меню «Сервис» в правом верхнем углу диспетчера сервера.
  2. Выберите элемент папки «Группы приложений» на левой боковой панели.
  3. Дважды щелкните ранее добавленную группу, затем дважды щелкните приложение "Web API".
  4. Выберите вкладку под названием «Правила преобразования выдачи».
  5. Удалите все правила, которые вы, возможно, уже добавили.
  6. Нажмите кнопку «Добавить правило ...» внизу.
  7. Выберите «Отправить заявку с использованием пользовательского правила» и нажмите «Далее».
  8. Дайте правилу имя «StoreRoles» и вставьте следующее в поле «Custom rule»:
  9. Нажмите "Готово" и добавьте еще одно правило.
  10. Снова выберите «Отправить заявку с использованием пользовательского правила» и нажмите «Далее».
  11. Дайте этому правилу имя «IssueRoles» и вставьте следующее в поле «Custom rule»:
    • c: [Type == "role", Value = ~ "^ Prefix. +"] => Проблема (заявка = c);
  12. Часть, содержащая //"^Prefix.+"//, является выражением регулярного выражения, используемым для фильтрации групп окон, отправляемых как часть утверждений. В этом случае мы принимаем только группы окон, начинающиеся с «Префикс». Отрегулируйте это в соответствии со своими потребностями.
  13. Нажмите готово.
0 голосов
/ 03 апреля 2019

Вы можете использовать веб-браузер для доступа к веб-приложению.

Это дает вам доступ к правилам утверждений - как и веб-API в вашем примере.

Затем используйте правило LDAP с одним изпараметры «Token-Groups», например «Unqualified», и сопоставьте его с типом «Role».

Это добавит все группы к токену, по одной заявке Role на группу.

...