[Перевод] Аутентификация по протоколу SAML с помощью OpenAM на примере Yandex Cloud
Введение
В данной статье описывается, как настроить вход по технологии единого входа (SSO) по протоколу SAML в Yandex Cloud через Access Management платформу с открытым исходным кодом OpenAM.
Подготовка
Для настройки SAML аутентификации требуется
Платформа Docker и запущенный Docker Engine
Локально запущенный инстанс OpenAM. Для запуска OpenAM выполните команду.
docker run -h openam.example.org -p 8080:8080 --name openam openidentityplatform/openam
Подробное описание установки и первоначальной настройки OpenAM по ссылке
Настройка федерации в OpenAM
Создание и настройка Identity Provider в OpenAM
Откройте консоль администратора
Перейдите в нужный realm
Выберите в разделе Common Tasks Configure SAMLv2 Provider
OpenAM Realm Common Tasks
Далее Create Hosted Identity Provider
Configure SAML v2 Provider
Выберите ключ для подписи (для демонстрационных целей будем использовать test), введите имя круга доверия, а так же свяжите атрибуты пользователей Yandex Cloud Organization c OpenAM. Для демонстрационных целей пользователи будут связаны по email.
Configure SAML Identity Provider
Нажмите кнопку Configure.
Настройка связи пользователей OpenAM
Откройте консоль администратора
Выберите требуемый realm
В меню слева выберите раздел Applications и перейдите в SAML 2.0
В списке Entity Providers выберите
http://openam.example.org:8080/openam
На закладке Assertion Content в разделе NameID Format в список NameID Value Map добавьте элемент
urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified=mail
Нажмите Save
Создание пользователей OpenAM
Откройте консоль администратора
Выберите требуемый realm
Создайте пользователя и заполните у него атрибут Email Address
Создание и настройка федерации в Yandex Cloud Organization
Создайте федерацию
Перейдите в сервис Yandex Cloud Organization.
На панели слева выберите раздел Федерации .
Нажмите кнопку Создать федерацию.
Задайте имя федерации. Имя должно быть уникальным в каталоге.
При необходимости добавьте описание.
В поле Время жизни cookie укажите время, в течение которого браузер не будет требовать у пользователя повторной аутентификации.
В поле IdP Issuer вставьте ссылку:
http://openam.example.org:8080/openam
В поле Ссылка на страницу для входа в IdP вставьте ссылку:
http://openam.example.org:8080/openam/SSORedirect/metaAlias/idp
Нажмите кнопку Создать федерацию.
Добавьте сертификаты
При аутентификации у сервиса Cloud Organization должна быть возможность проверить сертификат IdP-сервера. Для этого добавьте сертификат в федерацию:
Откройте ссылку OpenAM
http://openam.example.org:8080/openam/saml2/jsp/exportmetadata.jsp
и скопируйте значение тега ds: X509CertificateСохраните сертификат в текстовом файле с расширением
.cer
в следующем формате:
----BEGIN CERTIFICATE-----
<значение ds:X509Certificate>
----END CERTIFICATE-----
На панели слева выберите раздел Федерации .
Нажмите имя федерации, для которой нужно добавить сертификат.
Внизу страницы нажмите кнопку Добавить сертификат.
Введите название и описание сертификата.
Нажмите Выбрать файл и укажите путь к нему.
Нажмите кнопку Добавить.
Cоздание и настройка Service Provider в OpenAM
Создайте файл метаданных для OpenAM
Создайте файл
metadata.xml
со следующим содержимым, где ID_федерации — идентификатор федерации из консоли Yandex Cloud Organizations, раздела Федерации
Создание Service Provider в OpenAM
Откройте консоль администратора
Перейдите в нужный realm
Выберите в разделе Common Tasks Configure SAMLv2 Provider
Далее Configure Remote Service Provider
SAML Remote Service Provider
В качестве метаданных загрузите созданный на предыдущем этапе файл
metadata.xml
Выберите существующий Circle Of Trust, созданный на этапе Создание и настройка Identity Provider в OpenAM
Нажмите Configure
Добавление пользователей в Yandex Cloud Organization
При включенной опции Автоматически создавать пользователей в федерацию будут добавляться только пользователи, впервые авторизующиеся в облаке. Повторное добавление федеративного пользователя после его удаления из федерации возможно только вручную.
Войдите в аккаунт администратора или владельца организации.
Перейдите в сервис Yandex Cloud Organization.
На панели слева выберите раздел Пользователи .
В правом верхнем углу нажмите Добавить федеративных пользователей.
Выберите федерацию, из которой необходимо добавить пользователей.
Введите email адреса пользователей из OpenAM
Нажмите кнопку Добавить. Пользователи будут подключены к организации.
Проверка аутентификации
Когда вы закончили настройку SSO, протестируйте, что все работает:
Откройте браузер в гостевом режиме или режиме инкогнито.
Перейдите по URL для входа в консоль:
https://console.cloud.yandex.ru/federations/
Введите данные для аутентификации и нажмите кнопку Login.
После успешной аутентификации IdP-сервер перенаправит вас по URL https://console.cloud.yandex.ru/federations/
, который вы указали файле метаданных для Service Provider в настройках OpenAM, а после — на главную страницу консоли управления. В правом верхнем углу вы сможете увидеть, что вошли в консоль от имени федеративного пользователя.
Habrahabr.ru прочитано 89313 раз