Руководство: настройка объединенного потока единого входа OpenID Connect между API Manager и Gluu Server
Всем привет !!! 👋
В этой среде я расскажу, как объединить и настроить поток SSO OpenID Connect между WSO2 API Manager и Gluu Identity Server.
Я буду использовать
WSO2 API Manager v2.6
сWSO2 Identity Server as Key Manager v5.7
иGluu Server v3.1.7
и выполнять единый вход для узла магазина API
Надеюсь, вам это понравится и вы сочтете это полезным 🙌
Сервер идентификации Gluu
Быстрая установка и запуск
Начнем демонстрацию с установки Gluu Identity Server. Вы можете обратиться здесь для быстрой установки на Google Cloud Platform.
Ниже приведены команды, выполняемые для установки и настройки сервера Gluu в приведенном выше справочнике…
# add the sources echo "deb https://repo.gluu.org/ubuntu/ xenial main" > /etc/apt/sources.list.d/gluu-repo.list # download key curl https://repo.gluu.org/ubuntu/gluu-apt.key | apt-key add - # udpate the existing packages apt-get update # install gluu-server 3.1.7 apt-get install gluu-server-3.1.7 # start the gluu-server service gluu-server-3.1.7 start # login to the gluu-server service gluu-server-3.1.7 login # execute the following to setup the gluu-server cd /install/community-edition-setup/ ./setup.py
✋ Конфигурации и метаданные OpenID Connect
После того, как установка будет завершена и сервер будет запущен и работает должным образом, войдите в консоль управления Gluu, используя учетные данные администратора.
Щелкните раздел Конфигурация на панели навигации и выберите Конфигурации JSON, чтобы вывести список всех необходимых конфигураций и метаданных сервера Gluu.
На следующем экране перейдите на вкладку Конфигурация oxAuth и прокрутите вниз или найдите legacyIdTokenClaims. Измените конфигурацию на true
. Это необходимо для того, чтобы сервер идентификации Gluu мог передавать запрошенные утверждения и информацию через токены идентификатора.
Прокрутите вверх и отметьте следующие конечные точки. При настройке серверов WSO2 нам понадобятся следующие URI конечных точек.
authorizationEndpoint
: будет выглядеть как<host>/oxauth/restv1/authorize
tokenEndpoint
: будет выглядеть как<host>/oxauth/restv1/token
userInfoEndpoint
: будет выглядеть как<host>/oxauth/restv1/userinfo
Сделав заметки, нажмите Сертификаты в разделе Конфигурации, загрузите сертификат подписи IDP и сохраните его.
✋ Регистрация клиента OpenID Connect
Затем мы настроим клиента OpenID Connect на сервере идентификации Gluu для связи и выполнения потока единого входа с серверами WSO2.
Разверните раздел OpenID Connect на левой панели навигации и выберите Клиенты, чтобы вывести их список и создать новых клиентов.
Нажмите Добавить клиента и на следующем экране введите следующее
- Секрет клиента: Нажмите Создать секрет клиента, чтобы его создать
- Имя клиента:
WSO2ISKM
- URI для перенаправления входа:
https://localhost:9444/commonauth
- Области применения:
openid
&profile
- Типы ответов:
code
token
&id_token
- Типы грантов:
authorization_code
&password
и Добавить.
Затем перейдите на вкладку Дополнительные настройки нашего клиента OpenID Connect и включите параметр Включить утверждения в токен идентификатора, выбрав true
в раскрывающемся списке.
Обратите внимание, что вам необходимо включить legacyIdTokenClaims в конфигурации JSON сервера Gluu, чтобы внести изменения в свойство Включить утверждения в токен идентификатора в Расширенные настройки
и Обновить
Щелкните Сводка конфигурации клиента вверху, скопируйте и сохраните идентификатор клиента и секрет нашего WSO2ISKM
клиента OpenID Connect.
✋ Регистрация пользователя
Затем нажмите на раздел Пользователи и Добавить человека, чтобы зарегистрировать нового пользователя для этой демонстрации.
Добавьте следующее
- Имя пользователя:
gluuuser
- Имя:
Gluu
- Отображаемое имя:
UserGluu
- Фамилия:
User
- Электронная почта:
[email protected]
- Пароль: любые предпочтительные пароли для вашего пользователя 😃
- Статус пользователя:
Active
выберите и включите поля Предпочтительное имя пользователя и Организация из списка, отображаемого слева.
- Предпочтительное имя пользователя:
gluuuser
(то же, что и имя пользователя) - Организация:
Subscriber
(для демонстрации единого входа с помощью узла хранилища диспетчера API)
и Добавить.
✋ Объем и конфигурации претензий
Мы почти закончили настройку сервера Gluu. В качестве последнего шага на сервере Gluu перейдите к OpenID Connect и выберите Области.
Откройте область профиля и нажмите «Добавить утверждение» и включите следующие утверждения вместе с существующими.
Preferred Username
Organization
В демонстрационных целях я настроил и включил все необходимые претензии в доступные области. Лучше всего попробовать создать новую область и включить в нее все дополнительные необходимые утверждения. Если это так, то мы должны включить вновь созданную область в наш клиент OpenID Connect на сервере Gluu для обслуживания токенов.
Сервер идентификации WSO2 в качестве диспетчера ключей
Мы закончили с конфигурациями Gluu. Наша следующая остановка - сервер идентификации WSO2 в качестве диспетчера ключей.
В этой демонстрации я буду использовать WSO2 API Manager 2.6 и WSO2 Identity Server в качестве Key Manager 5.7. Вы можете обратиться здесь, чтобы настроить IS-KM в своей среде.
В качестве бонуса вы можете использовать Hydrogen (устаревшую версию можно найти здесь) для настройки среды за считанные минуты.
✋ Конфигурации поставщика удостоверений
Давайте начнем путешествие 🚀 с настройки поставщика удостоверений для объединения с сервером Gluu.
Запустите сервер IS-KM и войдите в консоль Carbon Management. Выберите Добавить в разделе Поставщики удостоверений, чтобы зарегистрировать поставщика удостоверений.
На следующем экране добавьте следующие
- Имя поставщика удостоверений:
GluuIDP
- Отображаемое имя:
Gluu Identity Provider
- Публичный сертификат поставщика удостоверений: загрузите сертификат, который мы скачали с сервера Gluu
IDP Signing Cert
Затем разверните Конфигурацию утверждения и Базовую конфигурацию утверждения, нажмите Определить настраиваемый диалект утверждения и выполните следующие действия.
preferred_username
:http://wso2.org/claims/displayName
o
:http://wso2.org/claims/role
Заявление организации от Gluu Server передается как
o
в ID Token.
Затем разверните раздел Конфигурация ролей и сопоставьте организацию подписчика, полученную с сервера Gluu, с нашей ролью Internal/subscriber
, как показано ниже.
Разверните Федеративные аутентификаторы ›Конфигурация OAuth2 / OpenID Connect и внесите следующие изменения.
- Включить OAuth2 / OpenIDConnect:
true
- По умолчанию:
true
- Идентификатор клиента: идентификатор клиента из
WSO2ISKM
- Client Secret: Client Secret из
WSO2ISKM
- URL-адрес конечной точки авторизации:
authorizationEndpoint
из конфигураций - URL-адрес конечной точки токена:
tokenEndpoint
из конфигураций - URL-адрес конечной точки Userinfo:
userInfoEndpoint
из конфигураций - Расположение идентификатора пользователя OpenID Connect:
User ID found among claims
- Дополнительные параметры запроса:
scope=openid profile
если вы ввели новую область для включения утверждений
preferred_username
иorganization
, добавьте и эту область
- Включить базовую аутентификацию HTTP для аутентификации клиента:
true
(по умолчанию сервер Gluu ожидает заголовок базовой аутентификации для аутентификации)
Разверните Своевременную инициализацию и выберите PRIMARY
в качестве домена инициализации хранилища пользователей.
и Зарегистрируйтесь.
Прилагается полный снимок наших GluuIDP
конфигураций на сервере идентификации в качестве сервера диспетчера ключей 👌👌
✋ Конфигурации поставщика услуг
Затем нам понадобится поставщик услуг для связи с узлом хранилища API. Нажмите Добавить в разделе Поставщики услуг и выполните следующие действия.
и Зарегистрируйтесь.
На следующем экране разверните «Конфигурации утверждений», выберите «Определить настраиваемый диалект утверждения» и определите следующее, чтобы передать утверждение preferred_username
в узел Store.
preferred_username
:http://wso2.org/claims/displayName
:Requested
Затем разверните Конфигурация OAuth2 / OpenID Connect в разделе Конфигурация входящей аутентификации и нажмите Настроить. На следующем экране добавьте
- URL обратного вызова:
https://localhost:9443/store/jagg/jaggery_oidc_acs.jag
и Добавить.
Наконец, разверните Конфигурация локальной и исходящей аутентификации и выберите GluuIDP
в качестве Федеративной аутентификации.
и Обновить.
Как всегда, полный фрагмент конфигурации поставщика услуг API_STORE
представлен ниже👌 🤓
👉 Перед тем, как перейти к следующей части, сделайте заметку или скопируйте client_id
и client_secret
, которые генерируются в нашем сервис-провайдере, так как они нам нужны при настройке site.json.
Диспетчер API WSO2
Мы почти закончили с нашими конфигурациями. На заключительном этапе нам нужно настроить site.json, который связан с узлом хранилища диспетчера API, чтобы инициировать поток единого входа.
✋ Магазин: Site.json
Откройте каталог WSO2 API Manager, перейдите в <apim>/repository/deployment/server/jaggeryapps/store/site/conf
и откройте site.json, чтобы настроить OIDC.
Ниже приведен полный сегмент модели конфигурации OpenID Connect в site.json. Чтобы настроить site.json в своей среде, воспользуйтесь следующей информацией.
Замените
Client ID
иClient Secret
учетными данными, полученными от поставщика услугAPI_STORE
"oidcConfiguration" : { "enabled": "true", "issuer": "API_STORE", "identityProviderURI": "https://localhost:9444/oauth2/token", "authorizationEndpointURI": "https://localhost:9444/oauth2/authorize", "tokenEndpointURI": "https://localhost:9444/oauth2/token", "userInfoURI": "https://localhost:9444/oauth2/userinfo", "jwksURI": "https://localhost:9444/oauth2/jwks", "logoutEndpointURI": "https://localhost:9444/oidc/logout", "authHttpMethod": "POST", "clientConfiguration" : { "clientId" : "Client ID", "clientSecret" : "Client Secret", "responseType" : "code", "authorizationType" : "authorization_code", "scope" : "phone email address openid profile", "redirectURI" : "https://localhost:9443/store/jagg/jaggery_oidc_acs.jag", "postLogoutRedirectURI" : "https://localhost:9443/store/", "clientAlgorithm" : "RS256" } }
🎉 Вуаля !!! 🎉
Мы успешно настроили федеративную аутентификацию OpenID Connect между Gluu и единый вход с OpenID Connect с API Store.
👏 👏 👏
Надеюсь, вы найдете это полезным для опробования и настройки федеративной аутентификации и единого входа между WSO2 API Manager и Gluu Server.
Далее небольшой (альфа) тест-драйв…
Тест-драйв
Перейдите на портал магазина с помощью https://localhost:9443/store/
и щелкните Sign-In
.
Вы будете перенаправлены на страницу входа в Gluu для ввода учетных данных. Введите учетные данные нашего пользователя Gluu, а затем разрешите атрибутам на экране согласия продолжить объединение и предоставление пользователей Gluu диспетчеру API WSO2.
Войдите в консоль Carbon Management диспетчера WSO2 API и перечислите пользователей. Если федерация прошла успешно и JIT Provisioned прошел без ошибок, вы сможете увидеть нашего пользователя Gluu в появившемся списке.
Удачной укладки !!!! 🤘 ✌️
Исправление проблем
SSL-рукопожатие | PKIX
Если вы столкнетесь с какими-либо проблемами, связанными с SSL-рукопожатием или, точнее, любыми исключениями PKIX, загрузите публичный сертификат домена сервера Gluu и добавьте его на сервер идентификации WSO2 в качестве доверенного хранилища диспетчера ключей.
Вы можете скачать публичный сертификат домена Gluu Server из браузера. Например, в Chrome вы можете щелкнуть значок замка 🔒 рядом с URL-адресом и загрузить сертификат.
После успешного получения сертификата выполните следующую команду keytool
для доверенного хранилища внутри каталога <iskm>/repository/resources/security
.
# execute the following command and wso2carbon for the password keytool -import -alias gluu -file <path-of-the-cert> -storetype JKS -keystore client-truststore.jks
После успешного импорта попробуйте еще раз поток SSO в новом окне.
Фреймворк JIT Provisioning & Authentication
Если вы хотите включить журналы отладки для потока подготовки JIT и потоков федеративной проверки подлинности, откройте и добавьте следующее свойство в <server>/repository/conf/log4j.properties
# to enable DEBUG logs in the authentication framework log4j.logger.org.wso2.carbon.identity.application.authentication.framework = DEBUG
И JIT Provisioning обрабатывается org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.JITProvisionningPostAuthenticationHandler
.