Руководство: настройка федеративной аутентификации OpenID Connect с помощью Azure AD

Привет всем !!! 👋

В этой среде я расскажу, как настроить поток единого входа Federated OpenID Connect между WSO2 API Manager и службой Azure AD.

Я буду использовать WSO2 API Manager 3.1, чтобы проиллюстрировать конфигурации и потоки.

Вы можете обратиться к одному из моих носителей OIDC SSO вместе с этим, чтобы настроить более старые версии WSO2 API Manager.

* Поток OIDC SSO с Gluu
* OIDC SSO с Keycloak
* OIDC SSO с Okta

Надеюсь, вы найдете это полезным и достаточно наглядным, чтобы пройти через настройки… 👐

Лазурь

✋ Регистрация в приложении

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

После того, как вы закончите регистрацию, перейдите на портал Azure и войдите в систему со своими учетными данными. После успешного входа в систему вы увидите экран, похожий на подсказку ниже.

Если вы не можете найти Azure Active Directory, выполните поиск с помощью панели поиска, представленной вверху.

Выберите Azure Active Directory. Затем нажмите Создать каталог на верхней панели, чтобы создать каталог.

Это потому, что у нас нет зарегистрированной Active Directory, чтобы продолжить нашу демонстрацию. Следовательно, мы будем создавать новый каталог.

В следующей форме выберите Azure Active Directory и нажмите Далее.

Введите следующее

  • Название организации: Demo OIDC Organization
  • Начальное доменное имя: demooidcorg
  • Страна / регион: United States (на ваш выбор)

и Обзор + Создать, затем выберите Создать. Создание Active Directory в вашей среде займет некоторое время. После успешного создания вы получите уведомление. Щелкните ссылку, чтобы перейти к созданному Active Directory.

На левой панели навигации выберите Регистрация приложения, чтобы зарегистрировать клиент OpenID Connect.

Следующий экран может отличаться от вас, если у вас есть зарегистрированные приложения.

Нажмите Новая регистрация и введите следующее

  • Имя: WSO2APIM
  • Поддерживаемые типы учетных записей: Personal Microsoft Accounts Only (я выбрал это для демонстрационных целей)
  • URI перенаправления: Web & https://localhost:9443/commonauth (измените имя хоста в соответствии с вашей средой)

и Зарегистрируйтесь.

После успешного создания вы будете перенаправлены на страницу с общей информацией зарегистрированного приложения. На следующем экране скопируйте и сохраните идентификатор клиента, так как нам потребуется настроить диспетчер API WSO2.

Затем нажмите на раздел Сертификаты и секреты на левой боковой панели и выберите Новый секрет клиента, чтобы сгенерировать секрет для нашего WSO2APIM приложения.

Введите следующее в предложенном модальном окне

  • Описание: WSO2APIM OIDC Secret
  • Срок действия: Never

и Добавить.

Скопируйте и сохраните сгенерированный Client Secret.

Сделав заметку, щелкните раздел Разрешения API на левой панели навигации, чтобы настроить разрешения OpenID и области профиля для нашего приложения.

Вы увидите похожий экран, как показано ниже, после нажатия на Разрешения API.

Нажмите кнопку Добавить разрешение, расположенную вверху, чтобы добавить новые разрешения в существующее дерево. После того, как вы нажмете кнопку Добавить разрешение, вы увидите всплывающее боковое окно со следующими параметрами.

выберите Microsoft Graph. На следующем экране выберите следующие разрешения

  • email
  • openid
  • profile

и Добавить разрешение (оставьте существующие разрешения как есть). Вы окажетесь на аналогичном экране, как показано ниже, со всеми настроенными разрешениями API.

✋ Регистрация группы

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

Если у вас есть активная платная подписка, вы можете следить за созданием ролей в службе Azure и назначать их пользователям. Кроме того, вы также можете создавать группы в Azure AD и назначать их своим пользователям

Перейдите в нашу Демо-организацию OIDC и нажмите Группы. Вы найдете подобное окно

Нажмите на новую группу, расположенную вверху, и заполните следующее в появившемся окне.

  • Тип группы: Security
  • Имя группы: Subscriber
  • Описание группы: Group for Subscriber

Затем нажмите Владельцы не выбраны. В появившемся боковом окне выберите нашу учетную запись Azure и Добавить владельца. Затем нажмите Нет выбранных участников и выполните то же самое, что описано выше, и нажмите Создать, чтобы создать группу подписчиков.

Выберите нашу группу подписчиков из списка и запишите значение идентификатора объекта.

Это необходимо для сопоставления групп с внутренними ролями Менеджера API. Что касается демонстрации (для простоты), мы будем использовать идентификаторы объектов групп для сопоставления ролей в диспетчере API.

👉 Добавить заявку на группы

Теперь нам нужно настроить наше приложение Azure для заполнения утверждения групп в токене идентификатора. Перейдите в наше приложение Azure WSO2APIM и нажмите Конфигурации токенов.

Нажмите Добавить заявку на группы и отметьте Группы безопасности. Затем разверните раздел ID, выберите ID группы и включите Создавать группы как заявки на роль.

и Добавить.

Теперь у нас все готово к конфигурациям Azure. Но прежде чем двигаться дальше, мы отметим конечную точку авторизации и токена нашего приложения Azure. Эти конечные точки нам понадобятся при настройке поставщика удостоверений в диспетчере API.

Перейдите на страницу Обзор нашего приложения Azure и нажмите кнопку Конечные точки. Появится боковое окно со всеми необходимыми конечными точками нашего приложения. Обратите внимание на конечные точки авторизации v2 и Token v2. В дополнение к вышеизложенному также обратите внимание на конечную точку документа метаданных OpenID Connect.

Если вы перейдете к URL-адресу конечной точки, упомянутому в документе метаданных OpenID Connect, вы найдете набор метаданных для настройки поставщика удостоверений в диспетчере API.

Диспетчер API WSO2

✋ Настроить имя пользователя электронной почты

Перед тем, как приступить к настройке с созданием поставщика удостоверений и регистрацией поставщика услуг, мы включим свойство EnableEmailUsername на сервере API Manager.

Это связано с тем, что утверждения preferred_username в токенах Azure ID представлены именами пользователей электронной почты. Следовательно, что касается этой демонстрации, мы включим имя пользователя электронной почты на нашем сервере API Manager для подготовки и входа в узлы Store.

Без preferred_username мы также можем использовать утверждение sub, представленное в токене Azure ID, которое будет уникальным значением идентификатора. Если вы планируете использовать утверждение sub в качестве идентификатора пользователя в диспетчере API, вам, возможно, придется увеличить количество символов шаблона регулярного выражения имени пользователя в user-mgt.xml (вы прокрутите до самого низа, чтобы увидеть полные конфигурации)

Перейдите к <apim>/repository/conf, откройте и добавьте следующие конфигурации в deployment.toml файл.

[tenant_mgt]
enable_email_domain = true

После внесения изменений запустите сервер для настройки требуемого поставщика удостоверений и поставщика услуг для демонстрации нашей системы единого входа OIDC.

✋ Конфигурации поставщика удостоверений

Направляйтесь в консоль Carbon Management и войдите в систему с учетными данными администратора. Выберите «Добавить» в разделе «Поставщики удостоверений» и введите следующие данные.

  • Имя поставщика удостоверений: AzureADIDP
  • Отображаемое имя: Azure AD IDP
  • Выберите тип сертификата IDP: Use IDP JWKS Endpoint
  • Конечная точка JWKS поставщика удостоверений: JWKS URI, найденный в документе метаданных OpenID Connect

Затем разверните Конфигурации утвержденийОпределить настраиваемый диалект утвержденияДобавить сопоставление утверждений и добавьте следующие сопоставления

  • preferred_username : http://wso2.org/claims/displayName
  • roles : http://wso2.org/claims/role

а также

  • URI утверждения идентификатора пользователя: preferred_username
  • URI утверждения роли: roles

Разверните Конфигурации ролей и нажмите Добавить сопоставление ролей. Вставьте идентификатор объекта, полученный из группы подписчиков, в службу Azure и сопоставьте его с нашей ролью внутреннего подписчика.

  • Object ID группы подписчиков: Internal/subscriber

Ниже приведен пример конфигурации сопоставления ролей…

Затем разверните Федеративные аутентификаторыКонфигурации OAuth2 / OpenID Connect и выполните следующие действия.

  • Включить OAuth2 / OpenID Connect: true
  • По умолчанию: true
  • Идентификатор клиента: Client ID нашего WSO2APIM приложения Azure
  • Client Secret: сгенерированный секрет нашего WSO2APIM приложения Azure.
  • URL-адрес конечной точки авторизации: authorization_endpoint в документе метаданных OpenID Connect
  • URL-адрес конечной точки токена: token_endpoint в документе метаданных OpenID Connect
  • URL-адрес конечной точки Userinfo: userinfo_endpoint в документе метаданных OpenID Connect
  • Дополнительные параметры запроса: scope=openid%20profile%20email

И, наконец, разверните аккордеон Just-In-Time Provisioning и настройте следующим образом

и Зарегистрируйтесь.

Ниже приведен полный снимок конфигурации AzureADIDP Identity Provider на сервере API Manager.

✋ Конфигурации поставщика услуг

Начиная с API Manager 3.x и далее, узлы Publisher и Devportal (A.K.A Store) по умолчанию настроены на потоки OIDC SSO.

Следовательно, перейдите к узлам Publisher и Devportal и нажмите кнопку «Войти», чтобы автоматически создать и зарегистрировать поставщика услуг для потока OIDC SSO. Вам не нужно входить на порталы, вышеупомянутый процесс заключается в создании соответствующих поставщиков услуг в диспетчере API.

Перейдите в консоль Carbon Management и войдите в систему с учетными данными администратора.

Нажмите Список в разделе Поставщики услуг, чтобы перечислить автоматически созданных поставщиков услуг, соответствующих Publisher apim_publisher и Devportal apim_devportal.

Нажмите Изменить apim_devportal, разверните Конфигурации заявки и внесите следующие изменения.

  • preferred_username : http://wso2.org/claims/displayName : Requested

Затем разверните конфигурацию локальной и исходящей аутентификации и выберите AzureADIDP в качестве федеративной аутентификации и внесите следующие изменения.

Если вы следите за этим блогом вместе с API Manager v3.2.0, то необходимо установить флажок "Подтвердить идентификацию с использованием сопоставленного локального идентификатора субъекта", чтобы он работал как ожидается.

- Спасибо Ширану за заметку.

и Обновить.

🎉 Вуаля !!! 🎉

Мы успешно настроили федеративную аутентификацию OpenID Connect между Azure AD и единый вход с OpenID Connect с API Devportal (Store).

👏 👏 👏

Надеюсь, вы найдете это полезным для опробования и настройки федеративной аутентификации и единого входа между WSO2 API Manager и Azure Server.

Затем мы проведем небольшой тест ...

Тест-драйв

Перейдите на портал магазина с помощью https://localhost:9443/devportal/ и щелкните Sign-In.

Вы будете перенаправлены на страницу входа в Microsoft для ввода учетных данных. Введите учетные данные нашего пользователя Microsoft, а затем разрешите атрибутам на экране согласия продолжить федерацию и предоставление пользователей Gluu для WSO2 API Manager.

Войдите в консоль Carbon Management диспетчера WSO2 API и перечислите пользователей. Если федерация прошла успешно и JIT Provisioned прошел без ошибок, вы сможете увидеть нашего пользователя в предложенном списке.

Удачной укладки !!!! 🤘 ✌️

Исправление проблем

Имя пользователя Regex

Если вы планируете использовать значение утверждения sub по умолчанию в качестве имени пользователя в диспетчере API, то необходимо изменить шаблон регулярного выражения имени пользователя в файле user-mgt.xml.

Серия API Manager 3.x следует новой модели конфигурации; файл deployment.toml для настройки всего сервера. Ниже приведены конфигурации TOML, относящиеся к шаблонам Regex в user-mgt.xml.

В дальнейшем я увеличил длину с 30 до 50. Если значение, полученное с помощью sub утверждения, меньше 30 символов, вам не нужно выполнять следующие изменения.

# deployment.toml configurations
[user_store.properties]
UsernameJavaRegEx = "^[\\S]{3,50}$"

Фреймворк JIT Provisioning & Authentication

Если вы хотите включить журналы отладки для потока подготовки JIT и потоков федеративной проверки подлинности, откройте и добавьте следующее свойство в <server>/repository/conf/log4j2.properties

# to enable DEBUG logs in the authentication framework
logger.authentication_framework.name=org.wso2.carbon.identity.application.authentication.framework
logger.authentication_framework.level=DEBUG

И укажите имя authentication_framework в свойстве loggers следующим образом (вы указываете регистратор в любом месте свойства loggers)

loggers = authentication_framework, AUDIT_LOG, ...

После внесения изменений в log4j2.properties. Применяется горячим способом 😍