Руководство: настройка федеративной аутентификации 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
. Применяется горячим способом 😍