Создать SAML-федерацию для Keycloak
- Если у вас нет сертификата, выпущенного у Keycloak, выпустите его.
- Создайте федерацию на стороне Selectel.
- Настройте SAML-приложение.
- Если при создании федерации на стороне Selectel вы отметили чекбокс Подписывать запросы аутентификации, настройте проверку цифровой подписи.
1. Выпустить сертификат
Выпустите сертификат у вашего поставщика удостоверений, подробнее в инструкции Сертификаты.
Вы можете создать федерацию без сертификата и добавить его позже, но без сертификата федерация работать не будет.
2. Создать федерацию на стороне Selectel
-
В панели управления в верхнем меню нажмите Аккаунт.
-
Перейдите в раздел Федерации.
-
Нажмите Добавить федерацию и выберите SAML.
-
В блоке Настройки федерации:
4.1. Введите имя федерации.
4.2. Опционально: введите описание федерации.
4.3. Измените время жизни сессии, в течение которой будет авторизован пользователь без необходимости повторной аутентификации, или оставьте значение по умолчанию (24 часа). Вы можете указать значение от 1 до 720 часов.
Время жизни сессии также можно установить на стороне провайдера Keycloak в параметре SSO Session Max или Assertion Lifespan. Если время жизни сессии установлено и в настройках федерации, и в Keycloak, будет применяться наименьшее значение. -
В блоке Настройки IDP:
5.1. В поле IdP Issuer введите идентификатор поставщика удостоверений —
https://<idp_url>/realms/master.Укажите
<idp_url>— ваш URL у поставщика удостоверений.5.2. Укажите ссылку на страницу входа поставщика удостоверений, куда пользователи будут перенаправляться для аутентификации через SSO —
https://<idp_url>/realms/master/protocol/saml.Укажите
<idp_url>— ваш URL у поставщика удостоверений.5.3. Чтобы пользователи создавались автоматически при первом входе в панель управления по SSO, отметьте чекбокс Автосоздание пользователей. Пользователи будут создаваться с разрешениями, которые вы указали при настройке маппинга групп пользователей. Если не настроить маппинг, пользователи будут создаваться без разрешений и не будут иметь доступа в панель управления.
Если чекбокс Автосоздание пользователей не отмечен, пользователей потребуется добавлять вручную.
5.3. Опционально: чтобы запросы аутентификации подписывались, отметьте чекбокс Подписывать запросы аутентификации.
5.4. Опционально: чтобы пользователям нужно было проходить аутентификацию через SSO при каждом входе, отметьте чекбокс Принудительная аутентификация в IdP. Если чекбокс не отмечен, аутентификацию не нужно будет проходить, пока активны cookies.
-
Нажмите Продолжить. Вы будете перенаправлены на страницу добавления сертификата.
-
Введите имя сертификата.
-
Вставьте сертификат, который вы выпустили на этапе 1. Он должен начинаться с
-----BEGIN CERTIFICATE-----и заканчиваться-----END CERTIFICATE----- -
Нажмите Добавить сертификат → Завершить добавление федерации.
3. Настроить SAML-приложение
-
В панели управления Keycloak войдите в аккаунт администратора (Administration Console).
-
Перейдите в раздел Clients.
-
Нажмите Create client.
-
На этапе General Settings:
4.1. В поле Client type выберите SAML.
4.2. В поле Client ID введите URL, на который будут перенаправляться пользователи после аутентификации —
https://api.selectel.ru/v1/federations/saml/<federation_id>.Укажите
<federation_id>— ID федерации на стороне Selectel, можно посмотреть в панели управления: в верхнем меню нажмите Аккаунт → Федерации → строка федерации → поле ID.4.3. В поле Name введите имя SAML-приложения.
4.4. Нажмите Next.
-
На этапе Login Settings:
5.1. В поле Root URL вставьте
https://api.selectel.ru/v1/federations/saml/<federation_id>.5.2. В поле Home URL вставьте
https://my.selectel.ru/federated-login.5.3. В поле Valid Redirect URIs вставьте
https://api.selectel.ru/v1/auth/federations/<federation_id>/saml/acs.5.4. Нажмите Save.
-
На этапе SAML capabilities:
6.1. В поле Name ID Format выберите формат идентификатора пользователя — username или email.
6.2. Включите тумблеры Force POST binding и Include AuthnStatement.
-
На этапе Signature and Encryption:
7.1. Включите тумблер Sign assertions.
7.2. Если вы не планируете настраивать проверку цифровой подписи, убедитесь, что в блоке Signing keys config выключен тумблер Client signature required.
7.3. В поле Signature algorithm выберите RSA_SHA256.
7.4. В поле SAML Signature Key Name выберите NONE.
-
На этапе Logout settings:
8.1. Включите тумблер Front channel logout.
8.2. Нажмите Save.
4. Настроить проверку цифровой подписи
Настраивать проверку цифровой подписи нужно, если при создании федерации на стороне поставщика удостоверений вы отметили чекбокс Подписывать запросы аутентификации.
-
В панели управления Keycloak перейдите в раздел Clients.
-
Откройте страницу SAML-приложения → вкладка Keys.
-
На этапе Signature and Encryption:
4.1. В блоке Signing keys config включите тумблеры Encrypt Assertions и Client signature required.
4.2. В блоке Encryption keys config включите тумблер Client Signature Required.
4.3. В поле Select method выберите Import.
4.4. В поле Archive Format выберите Certificate PEM. Если пункт Certificate PEM отсутствует, закройте окно, нажмите Regenerate → Yes → Import key. Пункт появится в списке.
4.5. Нажмите Browse и выберите сертификат, который вы скачали на странице федерации в Selectel.
4.6. Нажмите Confirm.