[Перевод] Настройка OAuth2/OIDC федерации в OpenAM

Введение

В данном руководстве мы настроим федерацию между двумя инстансами OpenAM по протоколу OAuth2/OIDC. Один инстанс будет являться OAuth2/OIDC сервером (Identity Provider), другой — клиентом (Service Provider). Таким образом, вы можете аутентифицироваться в клиентском инстансе OpenAM (SP) используя учетные данные инстанса OpenAM (IdP) по протоколу OAuth2/OIDC.

Установка инстансов OpenAM

Если у вас уже установлены инстансы OpenAM, можете пропустить этот раздел. Для демонстрационных целей мы установим OpenAM IdP и SP в Docker контейнерах.

Настройка сети

Добавьте имена хостов и IP адрес в файл hosts,

127.0.0.1 idp.acme.org sp.mycompany.org

В Windows системах файл hosts находится по адресу C:\\Windows\\System32\\drivers\\etc\\hosts, в Linux и Mac находится по адресу /etc/hosts

Создайте в Docker сеть для OpenAM

docker network create openam-oauth

Установка OpenAM IdP

Запустите образ OpenAM

docker run -h idp.acme.org -p 8080:8080 --network openam-oauth --name openam-idp openidentityplatform/openam

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

docker exec -w '/usr/openam/ssoconfiguratortools' openam-idp bash -c \\
'echo "ACCEPT_LICENSES=true
SERVER_URL=http://idp.acme.org:8080
DEPLOYMENT_URI=/$OPENAM_PATH
BASE_DIR=$OPENAM_DATA_DIR
locale=en_US
PLATFORM_LOCALE=en_US
AM_ENC_KEY=
ADMIN_PWD=passw0rd
AMLDAPUSERPASSWD=p@passw0rd
COOKIE_DOMAIN=idp.acme.org
ACCEPT_LICENSES=true
DATA_STORE=embedded
DIRECTORY_SSL=SIMPLE
DIRECTORY_SERVER=idp.acme.org
DIRECTORY_PORT=50389
DIRECTORY_ADMIN_PORT=4444
DIRECTORY_JMX_PORT=1689
ROOT_SUFFIX=dc=openam,dc=example,dc=org
DS_DIRMGRDN=cn=Directory Manager
DS_DIRMGRPASSWD=passw0rd" > conf.file && java -jar openam-configurator-tool*.jar --file conf.file'

Установка OpenAM SP

Запустите образ OpenAM

docker run -h sp.mycompany.org -p 8081:8080  --network openam-oauth --name openam-sp openidentityplatform/openam

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

docker exec -w '/usr/openam/ssoconfiguratortools' openam-sp bash -c \\
'echo "ACCEPT_LICENSES=true
SERVER_URL=http://sp.mycompany.org:8080
DEPLOYMENT_URI=/$OPENAM_PATH
BASE_DIR=$OPENAM_DATA_DIR
locale=en_US
PLATFORM_LOCALE=en_US
AM_ENC_KEY=
ADMIN_PWD=passw0rd
AMLDAPUSERPASSWD=p@passw0rd
COOKIE_DOMAIN=sp.mycompany.org
ACCEPT_LICENSES=true
DATA_STORE=embedded
DIRECTORY_SSL=SIMPLE
DIRECTORY_SERVER=sp.mycompany.org
DIRECTORY_PORT=50389
DIRECTORY_ADMIN_PORT=4444
DIRECTORY_JMX_PORT=1689
ROOT_SUFFIX=dc=openam,dc=example,dc=org
DS_DIRMGRDN=cn=Directory Manager
DS_DIRMGRPASSWD=passw0rd" > conf.file && java -jar openam-configurator-tool*.jar --file conf.file'

Настройка OAuth2/OIDC сервера

Откройте консоль OpenAM, который будет в роли OAuth2/OIDC сервера по адресу http://idp.acme.org:8080/openam. В поле логин введите значение amadmin, в поле пароль введите значение, указанное в настройке ADMIN_PWD, в данном случае passw0rd.

Перейдите в корневой realm и в разделе Dashboard выберите Configure OAuth Provider.

5c7522612f14e799377c379fa2a9f2d0.png

Далее, Configure OpenID Connect .

a367730f9b62e131bfb05daae7cbf5f4.png

Оставьте настройки без изменений и нажмите кнопку Create .

917a4e97188b84f3598f7a0b68f4ba81.png

Создание клиентского приложения

Откройте консоль администратора OAuth2/OIDC сервера, перйдите в нужный realm и в меню слева выберите пункт ApplicationsOAuth 2.0

edb16d3029901bbf5aefb93d7d42472d.png

В открывшемся списке нажмите кнопку New

dc89a7d06edba888eb6c544344db09ec.png

Заполните поля Name (client_id) и Password (client_secret). Повторите пароль и нажмите кнопку Create .

605ed58edadfce767c365eb336bc5f21.png

Откройте созданное приложение из списка и заполните настройки

Настройка OAuth2/OIDC клиента

Настройка модуля аутентификации OAuth2/OIDC

Откройте консоль OpenAM, который будет в роли OAuth2/OIDC клиента по адресу http://openam-sp.example.org:8081/openam. В поле логин введите значение amadmin, в поле пароль введите значение, указанное в настройке ADMIN_PWD, в данном случае passw0rd.

Откройте realm и в меню слева выберите AuthenticationModules . Нажмите кнопку Add Module.

6cfc7ca1a2fa4b475770b492d701a954.png

Тип модуля выберите OAuth2/OpenID Connect, имя модуля может быть любым, путь оно будет oauth.

2918a373ec21755165cc7d61ef17e200.png

Нажмите кнопку Create.

В списке откройте настройки созданного модуля и заполните настройки:

Настройка цепочки аутентификаци OAuth2/OIDC

Откройте консоль администратора OpenAM Service Provider. Выберите realm и в меню слева перейдите AuthenticationChains.

926f45c0cd504b5411de1945e552dc92.png

Создайте новую цепочку аутентификации

4f1e52a721c7816eea1ddac772054190.png

Нажмите кнопку Add a Module и добавьте созданный модуль oauth. Установите Criteria в значение Requisite. Нажмите OK и далее Save Changes .

076b32529b796651afd73bb3c8cc6dda.png

Настройка Realm

Перейдите в консоль администратора OpenAM SP. В меню слева перейдите AuthenticationSettings . На закладке User Profile выберите значение Ignore . Сохраните изменения.

0d024069e99c41fcd32cc43ab05bbd2a.png

Проверка решения

Перейдите в консоль администратора OpenAM OAuth2/OIDC Server, выберите realm, в разделе Dashboard в меню слева выберите Subjects .

Откроется список пользователей. Создайте новую учетную запись testIdp

7f8e801dc1e88916ea93af7dd1914314.png

Выйдите из консоли администратора OpenAM OAuth2/OIDC Server и консоли администратора OpenAM OAuth2/OIDC Client или откройте браузер в режиме инкогнито.

Откройте URL аутентификации OAuth2/OIDC Client в цепочке oauth http://sp.mycompany.org:8081/openam/XUI/? service=oauth

Вас перенаправит на аутентификацию на OAuth2/OIDC Server. Введите учетные данные пользователя testIdP.

Подтвердите согласие на доступ к данным пользователя приложения test_client

af5e0e9134be79daee23fa273b553b50.png

После нажатия Allow откроется консоль OpenAM OAuth2/OIDC Client с учетными данными пользователя OpenAM OAuth2/OIDC Server.

fd59dab3c8079519eadfe25edd5aced5.png

© Habrahabr.ru