Введение
В данной статье описывается, как настроить вход по технологии единого входа (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, а после — на главную страницу консоли управления. В правом верхнем углу вы сможете увидеть, что вошли в консоль от имени федеративного пользователя.
ссылка на оригинал статьи https://habr.com/ru/articles/773302/
Добавить комментарий