Аутентификация по протоколу SAML с помощью OpenAM на примере Yandex Cloud

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Введение

В данной статье описывается, как настроить вход по технологии единого входа (SSO) по протоколу SAML в Yandex Cloud через Access Management платформу с открытым исходным кодом OpenAM.

Подготовка

Для настройки SAML аутентификации требуется

  1. Платформа Docker и запущенный Docker Engine

  2. Локально запущенный инстанс OpenAM. Для запуска OpenAM выполните команду.

docker run -h openam.example.org -p 8080:8080 --name openam openidentityplatform/openam

Подробное описание установки и первоначальной настройки OpenAM по ссылке

Настройка федерации в OpenAM

Создание и настройка Identity Provider в OpenAM

  1. Откройте консоль администратора

  2. Перейдите в нужный realm

  3. Выберите в разделе Common Tasks Configure SAMLv2 Provider

OpenAM Realm Common Tasks
OpenAM Realm Common Tasks
  1. Далее Create Hosted Identity Provider

Configure SAML v2 Provider
Configure SAML v2 Provider
  1. Выберите ключ для подписи (для демонстрационных целей будем использовать test), введите имя круга доверия а так же свяжите атрибуты пользователей Yandex Cloud Organization c OpenAM. Для демонстрационных целей пользователи будут связаны по email.

Configure SAML Identity Provider
Configure SAML Identity Provider
  1. Нажмите кнопку Configure.

Настройка связи пользователей OpenAM

  1. Откройте консоль администратора

  2. Выберите требуемый realm

  3. В меню слева выберите раздел Applications и перейдите в SAML 2.0

  4. В списке Entity Providers выберите http://openam.example.org:8080/openam

  5. На закладке Assertion Content в разделе NameID Format в список NameID Value Map добавьте элемент urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified=mail

  6. Нажмите Save

Создание пользователей OpenAM

  1. Откройте консоль администратора

  2. Выберите требуемый realm

  3. Создайте пользователя и заполните у него атрибут Email Address

Создание и настройка федерации в Yandex Cloud Organization

Создайте федерацию

  1. Перейдите в сервис Yandex Cloud Organization.

  2. На панели слева выберите раздел Федерации .

  3. Нажмите кнопку Создать федерацию.

  4. Задайте имя федерации. Имя должно быть уникальным в каталоге.

  5. При необходимости добавьте описание.

  6. В поле Время жизни cookie укажите время, в течение которого браузер не будет требовать у пользователя повторной аутентификации.

  7. В поле IdP Issuer вставьте ссылку: http://openam.example.org:8080/openam

  8. В поле Ссылка на страницу для входа в IdP вставьте ссылку: http://openam.example.org:8080/openam/SSORedirect/metaAlias/idp

  9. Нажмите кнопку Создать федерацию.

Добавьте сертификаты

При аутентификации у сервиса Cloud Organization должна быть возможность проверить сертификат IdP-сервера. Для этого добавьте сертификат в федерацию:

  1. Откройте ссылку OpenAM http://openam.example.org:8080/openam/saml2/jsp/exportmetadata.jsp и скопируйте значение тега ds:X509Certificate

  2. Сохраните сертификат в текстовом файле с расширением .cer в следующем формате:

----BEGIN CERTIFICATE-----
<значение ds:X509Certificate>
----END CERTIFICATE-----
  1. На панели слева выберите раздел Федерации .

  2. Нажмите имя федерации, для которой нужно добавить сертификат.

  3. Внизу страницы нажмите кнопку Добавить сертификат.

  4. Введите название и описание сертификата.

  5. Нажмите Выбрать файл и укажите путь к нему.

  6. Нажмите кнопку Добавить.

Cоздание и настройка Service Provider в OpenAM

Создайте файл метаданных для OpenAM

  1. Создайте файл 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

  1. Откройте консоль администратора

  2. Перейдите в нужный realm

  3. Выберите в разделе Common Tasks Configure SAMLv2 Provider

  4. Далее Configure Remote Service Provider

SAML Remote Service Provider
SAML Remote Service Provider
  1. В качестве метаданных загрузите созданный на предыдущем этапе файл metadata.xml

  2. Выберите существующий Circle Of Trust, созданный на этапе Создание и настройка Identity Provider в OpenAM

  3. Нажмите Configure

Добавление пользователей в Yandex Cloud Organization

При включенной опции Автоматически создавать пользователей в федерацию будут добавляться только пользователи, впервые авторизующиеся в облаке. Повторное добавление федеративного пользователя после его удаления из федерации возможно только вручную.

  1. Войдите в аккаунт администратора или владельца организации.

  2. Перейдите в сервис Yandex Cloud Organization.

  3. На панели слева выберите раздел Пользователи .

  4. В правом верхнем углу нажмите Добавить федеративных пользователей.

  5. Выберите федерацию, из которой необходимо добавить пользователей.

  6. Введите email адреса пользователей из OpenAM

  7. Нажмите кнопку Добавить. Пользователи будут подключены к организации.

Проверка аутентификации

Когда вы закончили настройку SSO, протестируйте, что все работает:

  1. Откройте браузер в гостевом режиме или режиме инкогнито.

  2. Перейдите по URL для входа в консоль:

    https://console.cloud.yandex.ru/federations/<ID_федерации>

  3. Введите данные для аутентификации и нажмите кнопку Login.

После успешной аутентификации IdP-сервер перенаправит вас по URL https://console.cloud.yandex.ru/federations/<ID_федерации>, который вы указали файле метаданных для Service Provider в настройках OpenAM, а после — на главную страницу консоли управления. В правом верхнем углу вы сможете увидеть, что вошли в консоль от имени федеративного пользователя.

Источник: https://habr.com/ru/articles/773302/


Интересные статьи

Интересные статьи

Привет! Это моя первая статья на Хабре и в ней я хочу рассказать о, первой мной написанной, библиотеке для работы с формами. Но сперва, давайте поговорим о том, как должна выглядеть идеальная библиоте...
При обработке данных исходного DataSet часто попадаются аномальные значения, которые поставлены вместо пропусков, и мало того, что они скрываются, так ещё и несут вред общему делу. В данной статье буд...
Штош. Скорее всего, у многих в папке загрузок собиралась куча разных инсталляторов, архивов и прочих файлов. И вот наступает момент, когда из этой кучи экскрементов нужно...
Предположим, что данное нарушение возможно. Как же его выявить? В нашем распоряжении имеются записи с камер наблюдения рабочего места сотрудника и журнал проведения операций.Будем искать ...
Рассказываем, как развивалась система доменных имен — от эпохи ARPANET до разногласий, касающихся протоколов DoH/DoT — а также обсуждаем инфраструктуру IaaS-провайдера. Читать дальше...