-
Notifications
You must be signed in to change notification settings - Fork 0
Аутентификация по протоколу SAML с помощью OpenAM на примере Yandex Cloud
Для настройки SAML аутентификации требуется
- Платформа Docker и запущенный Docker Engine
- Локально запущенный инстанс OpenAM. Для запуска OpenAM выполните команду.
docker run -h openam.example.org -p 8080:8080 --name openam openidentityplatform/openam
Подробное описание установки и первоначальной настройки OpenAM по ссылке
- Откройте консоль администратора
- Перейдите в нужный realm
- Выберите в разделе Common Tasks Configure SAMLv2 Provider
- Далее Create Hosted Identity Provider
- Выберите ключ для подписи (для демонстрационных целей будем использовать test), введите имя круга доверия а так же свяжите атрибуты пользователей Yandex Cloud Organization c OpenAM. Для демонстрационных целей пользователи будут связаны по email.
- Нажмите кнопку Configure.
- Откройте консоль администратора
- Выберите требуемый 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
- Откройте консоль администратора
- Выберите требуемый realm
- Создайте пользователя и заполните у него атрибут Email Address
-
Перейдите в сервис Yandex Cloud Organization.
-
На панели слева выберите раздел Федерации .
-
Нажмите кнопку Создать федерацию.
-
Задайте имя федерации. Имя должно быть уникальным в каталоге.
-
При необходимости добавьте описание.
-
В поле Время жизни cookie укажите время, в течение которого браузер не будет требовать у пользователя повторной аутентификации.
-
В поле IdP Issuer вставьте ссылку:
http://openam.example.org:8080/openam
-
В поле Ссылка на страницу для входа в IdP вставьте ссылку:
http://openam.example.org:8080/openam/SSORedirect/metaAlias/idp
-
Включите опцию Автоматически создавать пользователей, чтобы автоматически добавлять пользователя в организацию после аутентификации. Если опция отключена, федеративных пользователей потребуется добавить вручную.
Автоматически федеративный пользователь создается только при первом входе пользователя в облако. Если вы удалили пользователя из федерации, вернуть его туда можно будет только вручную.
-
Включите опцию Принудительная повторная аутентификация (ForceAuthn) в IdP, чтобы задать значение
true
для параметра ForceAuthn в запросе аутентификации SAML. При включении этой опции IdP-провайдер запрашивает у пользователя аутентификацию по истечении сессии в Yandex Cloud. -
Нажмите кнопку Создать федерацию.
При аутентификации у сервиса Cloud Organization должна быть возможность проверить сертификат IdP-сервера. Для этого добавьте сертификат в федерацию:
- Откройте ссылку OpenAM
http://openam.example.org:8080/openam/saml2/jsp/exportmetadata.jsp
и скопируйте значение тега ds:X509Certificate
- Сохраните сертификат в текстовом файле с расширением
.cer
в следующем формате:
----BEGIN CERTIFICATE-----
<значение ds:X509Certificate>
----END CERTIFICATE-----
- На панели слева выберите раздел Федерации .
- Нажмите имя федерации, для которой нужно добавить сертификат.
- Внизу страницы нажмите кнопку Добавить сертификат.
- Введите название и описание сертификата.
- Выберите способ добавления сертификата:
- Чтобы добавить сертификат в виде файла, нажмите Выбрать файл и укажите путь к нему.
- Чтобы вставить скопированное содержимое сертификата, выберите способ Текст и вставьте содержимое.
- Нажмите кнопку Добавить.
- Создайте файл
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>
- Откройте консоль администратора
- Перейдите в нужный realm
- Выберите в разделе Common Tasks Configure SAMLv2 Provider
- Далее Configure Remote Service Provider
- В качестве метаданных загрузите созданный на предыдущем этапе файл
metadata.xml
- Выберите существующий Circle Of Trust, созданный на этапе Создание и настройка Identity Provider в OpenAM
- Нажмите Configure
Если при создании федерации вы не включили опцию Автоматически создавать пользователей, федеративных пользователей нужно добавить в организацию вручную.
Для этого вам понадобятся пользовательские Name ID. Их возвращает IdP-сервер вместе с ответом об успешной аутентификации.
При включенной опции Автоматически создавать пользователей в федерацию будут добавляться только пользователи, впервые авторизующиеся в облаке. Повторное добавление федеративного пользователя после его удаления из федерации возможно только вручную.
- Войдите в аккаунт администратора или владельца организации.
- Перейдите в сервис 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, а после — на главную страницу консоли управления. В правом верхнем углу вы сможете увидеть, что вошли в консоль от имени федеративного пользователя.
Контроль доступа: аутентификация, авторизация, single-sign-on, федерация.
Предоставляет возможность подключения Web сайтов и мобильных приложений к единой точке аутентификации, авторизации и SSO (цифровой паспорт - единая точка входа в сервисы компании). Федерация путем безопасного входа через сайт Госуслуг РФ, облачных провайдеров, а также с помощью аккаунтов социальных сетей и партнеров b2b.
Поддерживает открытые стандарты аутентификации, федерации и защиты веб сервисов: CDSSO, SAML,OpenID Connect, Web Services Security.
Интегрируется с внутренними каталогами компании Active Directory, LDAP, поддерживает NTLMv2, Kerberos, x509 аутентификацию.
Эволюция: Sun Access Manager, Oracle OpenSSO, Forgerock/Open Identity Platform OpenAM