Создать SAML-федерацию для Keycloak
- Если у вас нет сертификата, выпущенного у Keycloak, выпустите его.
- Создайте федерацию на стороне Selectel.
- Настройте SAML-приложение.
- Если при создании федерации на стороне Selectel вы отметили чекбокс Подписывать запросы аутентификации, настройте проверку цифровой подписи.
- Если при создании федерации на стороне Selectel вы включили автосоздание пользователей, настройте сопоставление групп пользователей.
1. Выпустить сертификат
Выпустите сертификат на стороне Keycloak, подробнее в инструкции Сертификаты.
Вы можете создать федерацию без сертификата и добавить его позже, но без сертификата федерация работать не будет.
2. Создать федерацию на стороне Selectel
-
В панели управления в верхнем меню нажмите IAM.
-
Перейдите в раздел Федерации.
-
Нажмите Добавить федерацию и выберите 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.4. Опционально: чтобы запросы аутентификации подписывались, отметьте чекбокс Подписывать запросы аутентификации.
5.5. Опционально: чтобы пользователям нужно было проходить аутентификацию через 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, можно посмотреть в панели управления: в верхнем меню нажмите IAM → Федерации → строка федерации → поле ID.4.3. В поле Name введите имя SAML-приложения.
4.4. Нажмите Next.
-
На этапе Login Settings:
5.1. В поле Root URL вставьте
https://api.selectel.ru/v1/federations/saml/<federation_id>.Укажите
<federation_id>— ID федерации на стороне Selectel, можно посмотреть в панели управления: в верхнем меню нажмите IAM → Федерации → строка федерации → поле 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.Укажите
<federation_id>— ID федерации на стороне Selectel, можно посмотреть в панели управления: в верхнем меню нажмите IAM → Федерации → строка федерации → поле ID.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. Настроить проверку цифровой подписи
Настраивать проверку цифровой подписи нужно, если при создании федерации на стороне Selectel на этапе 2 вы отметили чекбокс Подписывать запросы аутентификации на шаге 5.2.
-
В панели управления 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.
5. Настроить сопоставление групп пользователей
Настраивать сопоставление групп необходимо, если при создании федерации на стороне Selectel на этапе 2 вы включили автосоздание пользователей. Используйте подраздел Настроить сопоставление групп инструкции Сопоставление групп пользователей.