---
title: 'Создать SAML-федерацию для Keycloak'
sidebar_label: 'Создать SAML-федерацию для Keycloak'
sidebar_position: 1
description: 'Как настроить федерацию на стороне Selectel и поставщика удостоверений Keycloak по протоколу SAML'
---

import Formbricks from '@theme/MDXComponents/Formbricks'
import CreateFederationForSelectel from '@site/docs/_partials/access-control/federations/manage-saml/create-federation-for-selectel.mdx'

# Создать SAML-федерацию для Keycloak

1. Если у вас нет сертификата, выпущенного у Keycloak, [выпустите его](#issue-certificate).
2. [Создайте федерацию на стороне Selectel](#create-federation-for-selectel).
3. [Настройте SAML-приложение](#configure-saml).
4. Если при создании федерации на стороне Selectel вы отметили чекбокс **Подписывать запросы аутентификации**, [настройте проверку цифровой подписи](#configure-digital-signature-verification).
5. Если при создании федерации на стороне Selectel вы включили автосоздание пользователей, [настройте сопоставление групп пользователей](#configure-mapping).

### 1. Выпустить сертификат \{#issue-certificate}

Выпустите сертификат на стороне Keycloak, подробнее в инструкции [Сертификаты](/access-control/federations/manage-saml/certificates.mdx).

Вы можете создать федерацию без сертификата и добавить его позже, но без сертификата федерация работать не будет.

## 2. Создать федерацию на стороне Selectel \{#create-federation-for-selectel}

<CreateFederationForSelectel KeycloakSession="Время жизни сессии также можно установить на стороне провайдера Keycloak в параметре SSO Session Max или Assertion Lifespan. Если время жизни сессии установлено и в настройках федерации, и в Keycloak, будет применяться наименьшее значение." IdIssuer="https://<idp_url>/realms/master" Link="https://<idp_url>/realms/master/protocol/saml" />

## 3. Настроить SAML-приложение \{#configure-saml}

1. В панели управления Keycloak войдите в аккаунт администратора (Administration Console).

2. Перейдите в раздел **Clients**.

3. Нажмите **Create client**.

4. На этапе **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, можно посмотреть в [панели управления](https://my.selectel.ru/iam/federations): в верхнем меню нажмите **IAM** → **Федерации** → строка федерации → поле **ID**.

   4.3. В поле **Name** введите имя SAML-приложения.

   4.4. Нажмите **Next**.

5. На этапе **Login Settings**:

   5.1. В поле **Root URL** вставьте `https://api.selectel.ru/v1/federations/saml/<federation_id>`.

   Укажите `<federation_id>` — ID федерации на стороне Selectel, можно посмотреть в [панели управления](https://my.selectel.ru/iam/federations): в верхнем меню нажмите **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, можно посмотреть в [панели управления](https://my.selectel.ru/iam/federations): в верхнем меню нажмите **IAM** → **Федерации** → строка федерации → поле **ID**.

   5.4. Нажмите **Save**.

6. На этапе **SAML capabilities**:

   6.1. В поле **Name ID Format** выберите формат идентификатора пользователя — **username** или **email**.

   6.2. Включите тумблеры **Force POST binding** и **Include AuthnStatement**.

7. На этапе **Signature and Encryption**:

   7.1. Включите тумблер **Sign assertions**.

   7.2. Если вы не планируете [настраивать проверку цифровой подписи](#configure-digital-signature-verification), убедитесь, что в блоке **Signing keys config** выключен тумблер **Client signature required**.

   7.3. В поле **Signature algorithm** выберите **RSA\_SHA256**.

   7.4. В поле **SAML Signature Key Name** выберите **NONE**.

8. На этапе **Logout settings**:

   8.1. Включите тумблер **Front channel logout**.

   8.2. Нажмите **Save**.

## 4. Настроить проверку цифровой подписи \{#configure-digital-signature-verification}

Настраивать проверку цифровой подписи нужно, если при [создании федерации на стороне Selectel на этапе 2](#create-federation-for-selectel) вы отметили чекбокс **Подписывать запросы аутентификации** на шаге 5.2.

1. [Скачайте сертификат Selectel для подписи запросов](/access-control/federations/manage-saml/certificates.mdx#download-certificate-for-request-verification).
2. В панели управления Keycloak перейдите в раздел **Clients**.
3. Откройте страницу SAML-приложения → вкладка **Keys**.
4. На этапе **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. Настроить сопоставление групп пользователей \{#configure-mapping}

Настраивать сопоставление групп необходимо, если при [создании федерации на стороне Selectel на этапе 2](#create-federation-for-selectel) вы включили автосоздание пользователей.
Используйте подраздел [Настроить сопоставление групп](/access-control/groups/mapping.mdx#configure-group-mapping) инструкции [Сопоставление групп пользователей](/access-control/groups/mapping.mdx).

<Formbricks />
