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

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

Установка инстансов 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-saml

Установка OpenAM IdP

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

docker run -h idp.acme.org -p 8080:8080 --network openam-saml --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-saml --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'

Настройка Identity Provider и Service Provider

Настройка Hosted Identity Provider

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

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

f9798932615effd9bfa867753478a721.png

Далее Create Hosted Identity Provider

c81bc7aaef0e2bba831b23a8d8480ce3.png

В настройке Signing Key для демонстрационных целей выберите test, введите значение круга доверия Circle of Trust . Оно может быть любым. Затем, добавьте сопоставление атрибутов по атрибуту uid в настройку Attribute Mapping.

b022f243be08eef10221d078a27b44dc.png

Нажмите кнопку Configure. OpenAM предложит настроить Remote Service Provider. Так как он у нас еще не настроен, нажмите кнопку Finish

Настройка Hosted Service Provider

Откройте новую вкладку браузера и откройте консоль OpenAM Service Provider по URL http://sp.mycompany.org:8081/openam. В поле логин введите значение amadmin. В поле пароль введите значение, указанное в настройке ADMIN_PWD, в данном случае passw0rd. Перейдите в корневой realm и в разделе Dashboard выберите Configure SAMLv2 Provider. Далее Create Hosted Service Provider.

8e694c93a11cabf8287ec885833d1749.png

Введите имя круга доверия, остальные настройки можете оставить без изменений.

e2fd2cfd8608466fed48602514b46b8c.png

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

75c0b3d9e641a26db728af2911435507.png

Появится предложение настроить remote identity provider. Так как мы уже настроили Identity Provider на предыдущем шаге, то можно нажать Yes . Откроется окно настройки remote identity provider.

Настройка Remote Identity Provider

Выберите местоположение метаданных identity provider — URL. В поле введите URL метаданных identity provider.

http://idp.acme.org:8080/openam/saml2/jsp/exportmetadata.jsp

351b1426a1cda1cfac93a343dc0fedbb.png

Нажмите Configure . Появится сообщение об успешной конфигурации remote identity provider.

Настройка сопоставления пользователей

Откройте консоль администратора OpenAM SP, в разделе Dashboard в меню слева передите в раздел ApplicationsSAML 2.0

21cb3f5bacd12dced2f54c7499ed57a7.png

Откроется окно настройки SAML федерации. Перейдите Entity Providershttp://sp.mycompany.org:8081/openam

5d394a93aec9f5b5405516024c483fa6.png

В открывшемся окне передите на закладку Assertions Processing . Включите автоматическую федерацию по атрибуту uid.

7392f0275765bf61f1b3d077ed5eda2b.png

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

Настройка Realm для Service Provider

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

2dd769767b5f0a9b962d87cc439e81d6.png

Настройка Remote Service Provider

Передите в консоль администратора OpenAM IdP http://openam-idp.example.org:8080/openam. Откройте корневой realm и в разделе Dashboard выберите Configure SAMLv2 Provider, далее Configure Remote Service Provider .

4b0cd02f8eaf2c509cba064a34cd38ad.png

Добавьте URL метаданных service provider http://sp.mycompany.org:8080/openam/saml2/jsp/exportmetadata.jsp. Обратите внимание, что порт OpenAM Service Provider — 8080, т.к. инстансы OpenAM находятся в одной сети OpenAM IdP соединяется с контейнером SP по порту 8080.

166a9e366c49f32d9c6aa3bc65bd11e2.png

Нажмите кнопку Configure . Появится сообщение об успешном создании remote service provider.

Создание учетной записи

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

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

6e356e32bf90abd9bb9724d628b73d43.png

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

Выйдете из обеих консолей OpenAM и откройте в браузере ссылку инициализации аутентификации Service Provider. http://sp.mycompany.org:8081/openam/spssoinit? metaAlias=/sp&idpEntityID=http%3A//idp.acme.org%3A8080/openam&RelayState=http%3A//sp.mycompany.org%3A8081/openam

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

c2b7456572c4d05700407ce227ca9d78.png

После успешной аутентификации откроется консоль SP с аутентифицированным пользователем testIdP

c436ebab59838344162ba340995caf32.png

© Habrahabr.ru