Введение
В данной статье описывается, как настроить вход по технологии единого входа (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
Далее Create Hosted Identity Provider
Выберите ключ для подписи (для демонстрационных целей будем использовать test), введите имя круга доверия а так же свяжите атрибуты пользователей Yandex Cloud Organization c OpenAM. Для демонстрационных целей пользователи будут связаны по email.
Нажмите кнопку 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, раздела Федерации
<?xml version="1.0" encoding="UTF-8"?><md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" entityID="https://console.cloud.yandex.ru/federations/<ID_федерации>">
<md:SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://console.cloud.yandex.ru/federations/<ID_федерации>" index="1"/>
</md:SPSSODescriptor>
</md:EntityDescriptor>
Создание Service Provider в OpenAM
Откройте консоль администратора
Перейдите в нужный realm
Выберите в разделе Common Tasks Configure SAMLv2 Provider
Далее Configure 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/<ID_федерации>
Введите данные для аутентификации и нажмите кнопку Login.
После успешной аутентификации IdP-сервер перенаправит вас по URL https://console.cloud.yandex.ru/federations/<ID_федерации>
, который вы указали файле метаданных для Service Provider в настройках OpenAM, а после — на главную страницу консоли управления. В правом верхнем углу вы сможете увидеть, что вошли в консоль от имени федеративного пользователя.