В данном руководстве мы настроим федерацию между двумя инстансами 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
.
Далее Create Hosted Identity Provider
В настройке Signing Key
для демонстрационных целей выберите test
, введите значение круга доверия Circle of Trust
. Оно может быть любым. Затем, добавьте сопоставление атрибутов по атрибуту uid
в настройку Attribute Mapping
.
Нажмите кнопку 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
.
Введите имя круга доверия, остальные настройки можете оставить без изменений.
Нажмите кнопку Configure
.
Появится предложение настроить 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
Нажмите Configure
. Появится сообщение об успешной конфигурации remote identity provider.
Настройка сопоставления пользователей
Откройте консоль администратора OpenAM SP, в разделе Dashboard в меню слева передите в раздел Applications
→ SAML 2.0
Откроется окно настройки SAML федерации. Перейдите Entity Providers
→ http://sp.mycompany.org:8081/openam
В открывшемся окне передите на закладку Assertions Processing
. Включите автоматическую федерацию по атрибуту uid
.
Нажмите кнопку Save
Настройка Realm для Service Provider
Перейдите в консоль администратора OpenAM SP. В меню слева перейдите Authentication
→ Settings
. На закладке User Profile
выберите значение Ignore
. Сохраните изменения.
Настройка Remote Service Provider
Передите в консоль администратора OpenAM IdP http://openam-idp.example.org:8080/openam
. Откройте корневой realm и в разделе Dashboard выберите Configure SAMLv2 Provider
, далее Configure Remote Service Provider
.
Добавьте URL метаданных service provider http://sp.mycompany.org:8080/openam/saml2/jsp/exportmetadata.jsp . Обратите внимание, что порт OpenAM Service Provider - 8080
, т.к. инстансы OpenAM находятся в одной сети OpenAM IdP соединяется с контейнером SP по порту 8080
.
Нажмите кнопку Configure
. Появится сообщение об успешном создании remote service provider.
Создание учетной записи
Перейдите в консоль администратора OpenAM IdP, выберите realm, в разделе Dashboard в меню слева выберите Subjects
.
Откроется список пользователей. Создайте новую учетную запись testIdp
Проверка решения
Выйдете из обеих консолей 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
После успешной аутентификации откроется консоль SP с аутентифицированным пользователем testIdP