---
title: 'Аутентификация по SSO'
sidebar_label: 'Аутентификация по SSO'
sidebar_position: 4
description: 'Как проходить аутентификацию в панели управления по SSO и какие могут возникнуть ошибки'
---

import Formbricks from '@theme/MDXComponents/Formbricks'
import {CustomTable} from '@selectel/docux/components'
import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import {TabItemLabel} from '@selectel/docux/components'

# Аутентификация по SSO

## Первая аутентификация \{#first-auth}

Если пользователь был [добавлен вручную](/access-control/manage/add-user.mdx#add-panel-user), после приглашения в аккаунт он получит письмо на электронную почту со ссылкой для авторизации по SSO и ID федерации.

Если при создании федерации на стороне Selectel было включено автосоздание пользователей, ссылку для первой аутентификации предоставляет [Владелец аккаунта](/access-control/user-types.mdx#account-owner) или пользователь с ролью [`iam_admin`](/access-control/role-reference.mdx#iam-admin).

<Tabs queryString="first-auth">
  <TabItem value="email-link" default>
    <TabItemLabel>
      Вход по ссылке из письма
    </TabItemLabel>

    1. В письме нажмите **Войти по SSO**.
    2. Введите ID федерации.
    3. Опционально: чтобы не вводить ID федерации при каждом входе, отметьте чекбокс **Сохранить федерацию**.
    4. Нажмите **Войти по SSO**. Вы будете перенаправлены на страницу авторизации у поставщика удостоверений.
    5. Авторизуйтесь на стороне поставщика удостоверений. После авторизации вы будете возвращены на страницу входа в панели управления.
    6. Если у вас не указано ФИО, введите его.
    7. Нажмите **Войти по SSO**.
  </TabItem>

  <TabItem value="direct-link">
    <TabItemLabel>
      Вход по прямой ссылке
    </TabItemLabel>

    1. Перейдите по ссылке, которую вам предоставил [Владелец аккаунта](/access-control/user-types.mdx#account-owner) или пользователь с ролью [`iam_admin`](/access-control/role-reference.mdx#iam-admin).
    2. Если у вас не указано ФИО, введите его.
    3. Нажмите **Войти по SSO**.
    4. Если у вас не указан email, введите его.
    5. Если у вас не указано ФИО, введите его.
    6. Нажмите **Войти по SSO**.
  </TabItem>
</Tabs>

## Аутентификация при каждом входе \{#auth}

1. В [панели управления](https://my.selectel.ru/login/) на странице входа нажмите **Войти с помощью SSO**.
2. Введите ID федерации или выберите сохраненную федерацию. ID федерации можно посмотреть в письме-приглашении или запросить у [Владельца аккаунта](/access-control/user-types.mdx#account-owner) или пользователя с ролью [`iam.admin`](/access-control/role-reference.mdx#iam-admin).
3. Опционально: чтобы не вводить ID новой федерации при каждом входе, отметьте чекбокс **Сохранить федерацию**.
4. Нажмите **Войти по SSO**. Вы будете перенаправлены на страницу авторизации у поставщика удостоверений.
5. Авторизуйтесь у поставщика удостоверений.

## Ошибки при аутентификации \{#errors}

### По протоколу SAML \{#saml-errors}

Если федерация по протоколу SAML была настроена некорректно, при аутентификации федеративного пользователя могут возникать ошибки.
Группы ошибок:

* SAML001 — SAML099 – ошибки конфигурации федерации на стороне Selectel;
* SAML100 — SAML199 – ошибки валидации на стороне поставщика удостоверений (SAML Response);
* SAML200 — SAML299 – остальные ошибки.

<CustomTable>
  <table>
    <thead>
      <tr>
        <th>Ошибка</th>
        <th>Причина</th>
        <th>Решение</th>
      </tr>
    </thead>

    <tbody>
      <tr>
        <th colspan="3">SAML001 – SAML099 — ошибки конфигурации на стороне Selectel</th>
      </tr>

      <tr>
        <th>SAML001: saml\_idp\_is\_not\_configured</th>
        <td>SAML-совместимый провайдер не был добавлен на стороне Selectel</td>
        <td>Проверить настройку федерации на стороне Selectel</td>
      </tr>

      <tr>
        <th>SAML002: saml\_idp\_certs\_not\_configured</th>
        <td>У федерации в Selectel отсутствует сертификат</td>
        <td>Для федерации [добавить сертификат](/access-control/federations/manage-saml/certificates.mdx#add-certificate), выпущенный у поставщика удостоверений</td>
      </tr>

      <tr>
        <th colspan="3">SAML100 – SAML199 — ошибки валидации SAML Response</th>
      </tr>

      <tr>
        <th>SAML100: saml\_response\_invalid\_request\_id</th>

        <td>
          Некорректный идентификатор SAML запроса. Возможные причины:

          * повторная попытка аутентификации в рамках одного запроса (SAML Response);
          * истекло время, выделенное на аутентификацию пользователя — после перехода на страницу аутентификации пользователь ввел учетные данные через 10 или более минут
        </td>

        <td>Повторно перейти на страницу аутентификации из панели управления Selectel и авторизоваться</td>
      </tr>

      <tr>
        <th>SAML101: saml\_response\_invalid\_destination</th>
        <td>Параметр **Destination** в SAML Response проставляется некорректно</td>

        <td>
          Выставить корректный URL для SAML Assertion Consumer Service на стороне поставщика удостоверений:

          * в Keycloak – поле **Valid Redirect URIs**, подробнее в инструкции [Создать SAML-федерацию для Keycloak](/access-control/federations/manage-saml/create-saml-federation-keycloak.mdx);
          * в AD FS — поле **Relying party SAML 2.0 SSO service URL**, подробнее в инструкции [Создать SAML-федерацию для AD FS](/access-control/federations/manage-saml/create-saml-federation-adfs.mdx)
        </td>
      </tr>

      <tr>
        <th>SAML102: saml\_response\_invalid\_in\_response\_to</th>
        <td>SAML Response был создан для аутентификационного запроса с другим идентификатором</td>
        <td>Повторно перейти на страницу аутентификации из панели управления Selectel и авторизоваться</td>
      </tr>

      <tr>
        <th>SAML103: saml\_response\_invalid\_issuer</th>
        <td>При создании федерации на стороне Selectel указано некорректное значение поля **IdP Issuer**</td>
        <td>В настройках федерации в Selectel установить корректное значение в поле **IdP Issuer**</td>
      </tr>

      <tr>
        <th>SAML104: saml\_response\_invalid\_signature</th>

        <td>
          Сигнатура у полученного SAML Response выставлена некорректно. Возможные причины:

          * поставщик удостоверений вернул некорректный SAML Response. Проверить корректность SAML Response можно с помощью сторонних утилит (например, [Onelogin](https://www.samltool.com/decode.php));
          * для федерации в Selectel добавлен некорректный сертификат
        </td>

        <td>
          * при некорректном SAML Response: проверить настройку федерации на стороне поставщика удостоверений;
          * при некорректном сертификате: [добавить корректный сертификат](/access-control/federations/manage-saml/certificates.mdx#identity-provider-certificates)
        </td>
      </tr>

      <tr>
        <th>SAML105: saml\_response\_subject\_not\_found</th>
        <td>Секция **Subject** отсутствует в полученном SAML Response</td>
        <td>Настроить федерацию на стороне поставщика удостоверений так, чтобы в SAML Response была включена секция **Subject**</td>
      </tr>

      <tr>
        <th>SAML106: saml\_response\_name\_id\_not\_found</th>
        <td>Параметр **NameID** отсутствует в полученном SAML Response</td>

        <td>
          Настроить федерацию на стороне поставщика удостоверений так, чтобы в SAML Response был включен параметр **NameID**:

          * в AD FS – [настроить Claims Mapping](/access-control/federations/manage-saml/create-saml-federation-adfs.mdx#configure-claims-mapping);
          * Keycloak – настроек не требуется. Повторите аутентификацию позже
        </td>
      </tr>

      <tr>
        <th>SAML107: saml\_response\_user\_not\_found</th>
        <td>Пользователь не существует в Selectel</td>
        <td>[Добавить пользователя панели](/access-control/manage/add-user.mdx#add-panel-user) со способом входа **Федерация**. <br /> Если пользователь добавлен, убедитесь, что значение поля `ExternalID` у созданного пользователя соответствует идентификатору пользователя на стороне поставщика удостоверений</td>
      </tr>

      <tr>
        <th>SAML108: saml\_response\_invalid\_assertion\_xml</th>

        <td>
          Некорректный формат SAML Response. Проверить SAML Response можно с помощью сторонних утилит (например, [Onelogin](https://www.samltool.com/decode.php))
        </td>

        <td>
          * повторная аутентификация;
          * проверить настройку федерации на стороне поставщика удостоверений
        </td>
      </tr>

      <tr>
        <th>SAML109: saml\_response\_invalid\_assertion</th>
        <td>Некорректный SAML Response</td>

        <td>
          Проверить настройку федерации на стороне поставщика удостоверений. Проверить SAML Response можно с помощью сторонних утилит (например, [Onelogin](https://www.samltool.com/decode.php))
        </td>
      </tr>

      <tr>
        <th colspan="3">SAML200 – SAML299 — другие ошибки</th>
      </tr>

      <tr>
        <th>SAML200: saml\_internal\_error</th>
        <td>Требует уточнения</td>
        <td>[Создать тикет](https://my.selectel.ru/tickets)</td>
      </tr>

      <tr>
        <th>SAML201: saml\_malformed\_request</th>
        <td>Некорректные параметры запроса от поставщика удостоверений к Selectel после аутентификации на стороне поставщика</td>
        <td>Проверить настройку федерации на стороне поставщика удостоверений</td>
      </tr>
    </tbody>
  </table>
</CustomTable>

### По протоколу OIDC \{#oidc-errors}

Если федерация по протоколу OIDC была настроена некорректно, при аутентификации федеративного пользователя могут возникать ошибки.
Группы ошибок:

* OIDC001 — OIDC099 – ошибки настройки федерации на стороне Selectel;
* OIDC100 — OIDC199 – ошибки валидации по протоколу OIDC на стороне поставщика удостоверений;
* OIDC200 — OIDC299 – остальные ошибки.

<CustomTable>
  <table>
    <thead>
      <tr>
        <th>Ошибка</th>
        <th>Причина</th>
        <th>Решение</th>
      </tr>
    </thead>

    <tbody>
      <tr>
        <th colspan="3">OIDC001 – OIDC099 — ошибки настройки федерации на стороне Selectel</th>
      </tr>

      <tr>
        <th>OIDC001: oidc\_idp\_not\_configured</th>
        <td>OIDC-совместимый провайдер не был добавлен на стороне Selectel</td>
        <td>Проверить настройку федерации на стороне Selectel</td>
      </tr>

      <tr>
        <th>OIDC002: oidc\_jwks\_uri\_not\_configured</th>
        <td>В федерации в Selectel не добавлен JWKS URI для проверки подписи токенов</td>
        <td>Указать JWKS URI в настройках федерации. JWKS URI можно получить из Discovery Document поставщика удостоверений, который можно получить по адресу `https://<idp_url>/.well-known/openid-configuration`. Укажите `<idp_url>` — ваш URL у поставщика удостоверений</td>
      </tr>

      <tr>
        <th colspan="3">OIDC100 – OIDC199 — ошибки валидации по протоколу OIDC на стороне поставщика удостоверений</th>
      </tr>

      <tr>
        <th>OIDC100: oidc\_authorization\_error</th>

        <td>
          Поставщик удостоверений вернул ошибку на этапе авторизации.
          Возможные причины:

          * пользователь отклонил запрос на авторизацию;
          * клиент не авторизован для данного типа авторизации;
          * запрошенный Permitted scope не поддерживается;
          * внутренняя ошибка на стороне поставщика удостоверений
        </td>

        <td>
          Проверить настройки клиента у поставщика удостоверений и убедиться, что;

          * выбран Grant Type — `Authorization Code`;
          * указан корректный Permitted scope (минимум `openid`);
          * у пользователя есть доступ к приложению
        </td>
      </tr>

      <tr>
        <th>OIDC101: oidc\_state\_mismatch</th>

        <td>
          Параметр **state** не совпадает со значением, отправленным в запросе аутентификации.
          Возможные причины:

          * повторная попытка аутентификации в рамках одного запроса;
          * истекло время, выделенное на аутентификацию пользователя
        </td>

        <td>Повторно перейти на страницу аутентификации из панели управления Selectel и авторизоваться</td>
      </tr>

      <tr>
        <th>OIDC102: oidc\_token\_request\_failed</th>

        <td>
          Ошибка при обмене кода авторизации на токены.
          Возможные причины:

          * некорректные значения полей **Client ID** или **Client Secret**;
          * код авторизации истек или был использован повторно
        </td>

        <td>Проверить значения полей **Client ID** и **Client Secret** в настройках федерации на стороне Selectel и убедиться, что они совпадают с зарегистрированными у поставщика удостоверений</td>
      </tr>

      <tr>
        <th>OIDC103: oidc\_invalid\_signature</th>

        <td>
          Подпись ID Token выставлена некорректно.
          Возможные причины:

          * поставщик удостоверений вернул некорректное значение ID Token;
          * для федерации в Selectel указан некорректный JWKS URI;
          * публичный ключ с указанным ID не найден в JWKS
        </td>

        <td>
          При некорректном JWKS URI: указать корректный JWKS URI в настройках федерации.

          При ротации ключей: убедиться, что старые ключи доступны в JWKS в течение переходного периода
        </td>
      </tr>

      <tr>
        <th>OIDC104: oidc\_invalid\_token\_format</th>
        <td>Некорректный формат ID Token. Поставщик удостоверений вернул ответ, не соответствующий формату JWT</td>
        <td>Проверить настройку федерации на стороне поставщика удостоверений</td>
      </tr>

      <tr>
        <th>OIDC105: oidc\_token\_expired</th>
        <td>Срок действия ID Token истек</td>
        <td>Повторно перейти на страницу аутентификации из панели управления Selectel и авторизоваться</td>
      </tr>

      <tr>
        <th>OIDC106: oidc\_invalid\_audience</th>
        <td>Audience (`aud` claim) в ID Token не содержит значение Client ID</td>

        <td>
          * проверить настройки клиента у поставщика удостоверений;
          * убедиться, что токен выдан для Client ID, который указан в настройках федерации в Selectel
        </td>
      </tr>

      <tr>
        <th>OIDC107: oidc\_subject\_not\_found</th>
        <td>Subject identifier (`sub` claim) отсутствует или пустое в ID Token</td>
        <td>Настроить поставщика удостоверений для включения subject identifier в ID Token</td>
      </tr>

      <tr>
        <th>OIDC108: oidc\_nonce\_mismatch</th>
        <td>Значение Nonce в ID Token не совпадает с отправленным в запросе на авторизацию</td>

        <td>
          * повторно перейти на страницу аутентификации из панели управления Selectel и авторизоваться;
          * проверить настройки cookies в браузере
        </td>
      </tr>

      <tr>
        <th>OIDC109: oidc\_user\_not\_found</th>
        <td>Пользователь не существует в Selectel</td>

        <td>
          Добавить пользователя.
          Если пользователь добавлен, убедиться, что значение поля **ExternalID** у пользователя соответствует Claim sub из ID Token
        </td>
      </tr>

      <tr>
        <th colspan="3">OIDC200 – OIDC299 — другие ошибки</th>
      </tr>

      <tr>
        <th>OIDC200: oidc\_internal\_error</th>
        <td>Неизвестная ошибка</td>
        <td>[Создать тикет](https://my.selectel.ru/tickets)</td>
      </tr>

      <tr>
        <th>OIDC201: oidc\_malformed\_response</th>
        <td>Некорректный формат ответа от поставщика удостоверений к Selectel после аутентификации на стороне поставщика</td>

        <td>
          * проверить настройку федерации на стороне поставщика удостоверений;
          * убедиться, что ответ соответствует спецификации OIDC
        </td>
      </tr>
    </tbody>
  </table>
</CustomTable>

<Formbricks />
