- PVSM.RU - https://www.pvsm.ru -

Single Sign-On (SSO): OpenAM + mod_auth_mellon

Пост расcчитан на новичков, которые только знакомятся с SSO. В интернете не очень много документации по связке OpenAM и mod_auth_mellon, тем более на русском языке.
Для быстрого старта буду использовать образы Docker [1]. Для аутентификации пользователя рассмотрю модуль mod_auth_mellon, но можно использовать и другие методы, к примеру Policy Agent или OpenIG [2].

Теория

Технология единого входа (англ. Single Sign-On) — технология, при использовании которой пользователь переходит из одного раздела портала в другой без повторной аутентификации.
OpenAM (Access Management) — провайдер идентификации (IdP, англ. identity provider), осуществляет аутентификацию пользователя.
mod_auth_mellon — модуль apache, который аутентифицирует пользователя через IdP (OpenAM).

Настройка

Добавить в /etc/hosts домены для OpenAM и тестовых приложений:

127.0.0.1 openam.example.com fake.mellon.app.one fake.mellon.app.two

Запускаем OpenAM:

docker run -d -t -p 8080:8080 --add-host "openam.example.com:127.0.0.1" wstrange/openam-base-nightly

Запускаем тестовые приложения:

git clone git@bitbucket.org:agobzhelyan/openam_mellon.git
cd openam_mellon
docker build -t fake_mellon_app_one fake_app_1
docker run -d -p 8091:80 --name fake_mellon_app_one fake_mellon_app_one
docker build -t fake_mellon_app_two fake_app_2
docker run -d -p 8092:80 --name fake_mellon_app_two fake_mellon_app_two

Настраиваем OpenAM. Можно было создать docker образ, чтобы не делать это вручную. Но, думаю, будет лучше пройти эти простые шаги самому, чтобы лучше понять, как это работает:

— открываем http://openam.example.com:8080/openam/ [3];
— нажимаем Create Default Configuration;
— пароль для amAdmin — secret12, для UrlAccessAgent — secret123;
— переходим в Home (amAdmin / secret12), далее Federation и добавляем новый Circle of Trust с именем TestCOT;
— переходим на страницу Create Identity Provider: http://openam.example.com:8080/openam/task/CreateHostedIDP [4]. Меняем Signing Key на test и ждем на Configure, потом Finish;
— переходим на страницу Create Remote Service Provider: http://openam.example.com:8080/openam/task/CreateRemoteSP [5]. Ждем на File и загружаем fake_app_1/mellon/fake_mellon_app_one.xml, убеждаемся что COT выбран TestCOT
— тоже самое для fake_mellon_app_two.xml.

Настройка mod_auth_mellon. Тут лучше почитать https://github.com/UNINETT/mod_auth_mellon [6] и посмотреть пример реализации в тестовых приложениях https://bitbucket.org/agobzhelyan/openam_mellon/src [7].

Тестирование

— выходим из админки http://openam.example.com:8080/openam/ [3] и переходим в приложение 1 — http://fake.mellon.app.one:8091/ [8];
— нажимаем ссылку backend;
— нас перенаправит на логин страницу. Вводим demo / changeit;
— после этого возвращаемся на запрашиваемую (защищенную) страницу;
— переходим в приложение 2 http://fake.mellon.app.two:8092/backend/ [9] и обращаем внимание что и тут мы залогинены.

Заключение

Как видите, все просто, но на этапе знакомства с новой технологией уходит много времени. Надеюсь, время на написание этого поста потрачено не даром и он будет кому-то полезен. Тех, кто имеет опыт работы с данной технологией, прошу делиться им в комментариях.

Список используемой литературы

www.lab-ic.ru/solutions/sso [10]
doc.arcgis.com/ru/arcgis-online/reference/configure-openam.htm [11]
openam.forgerock.org/doc/getting-started/index.html [12]
en.wikipedia.org/wiki/Single_sign-on [13]
blog.kaliconseil.fr/2011/02/21/using-openam-with-apache-as-a-reverse-proxy [14]
mkchendil.blogspot.ch/2015/02/apache-and-openam-saml-federation.html [15]
blogs.splunk.com/2013/03/28/splunkweb-sso-samlv2 [16]

Автор: TpeHep

Источник [17]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/87533

Ссылки в тексте:

[1] Docker: https://www.docker.com/

[2] Policy Agent или OpenIG: http://openam.forgerock.org/doc/webhelp/admin-guide/gateway-or-policy-agent.html

[3] http://openam.example.com:8080/openam/: http://openam.example.com:8080/openam/

[4] http://openam.example.com:8080/openam/task/CreateHostedIDP: http://openam.example.com:8080/openam/task/CreateHostedIDP

[5] http://openam.example.com:8080/openam/task/CreateRemoteSP: http://openam.example.com:8080/openam/task/CreateRemoteSP

[6] https://github.com/UNINETT/mod_auth_mellon: https://github.com/UNINETT/mod_auth_mellon

[7] https://bitbucket.org/agobzhelyan/openam_mellon/src: https://bitbucket.org/agobzhelyan/openam_mellon/src

[8] http://fake.mellon.app.one:8091/: http://fake.mellon.app.one:8091/

[9] http://fake.mellon.app.two:8092/backend/: http://fake.mellon.app.two:8092/backend/

[10] www.lab-ic.ru/solutions/sso: http://www.lab-ic.ru/solutions/sso

[11] doc.arcgis.com/ru/arcgis-online/reference/configure-openam.htm: http://doc.arcgis.com/ru/arcgis-online/reference/configure-openam.htm

[12] openam.forgerock.org/doc/getting-started/index.html: http://openam.forgerock.org/doc/getting-started/index.html

[13] en.wikipedia.org/wiki/Single_sign-on: https://en.wikipedia.org/wiki/Single_sign-on

[14] blog.kaliconseil.fr/2011/02/21/using-openam-with-apache-as-a-reverse-proxy: http://blog.kaliconseil.fr/2011/02/21/using-openam-with-apache-as-a-reverse-proxy

[15] mkchendil.blogspot.ch/2015/02/apache-and-openam-saml-federation.html: http://mkchendil.blogspot.ch/2015/02/apache-and-openam-saml-federation.html

[16] blogs.splunk.com/2013/03/28/splunkweb-sso-samlv2: http://blogs.splunk.com/2013/03/28/splunkweb-sso-samlv2

[17] Источник: http://habrahabr.ru/post/254503/