# Устранение неполадок

> Что означают сообщения об ошибках единого входа и как их исправить: настройка провайдера, redirect URI, подпись, сертификат, время, email.

Ошибка показывается сотруднику словами на экране входа; та же причина записывается в [журнал аудита](/docs/audit-log) организации (событие `session.sso_login` с результатом «отказ»), поэтому владелец видит её без пересказа.

## На экране «Вход через SSO компании»

| Сообщение | Причина | Что сделать |
| --- | --- | --- |
| Единый вход для домена … не настроен | домен не подтверждён (или подтверждён другой организацией) | подтвердить домен ([Домены компании](/docs/sso/domains)) или войти по имени организации |
| Единый вход для организации … не настроен | у организации нет подключения | владелец настраивает раздел «Единый вход» |
| укажите рабочий email или имя организации | введено что-то, что не похоже ни на email, ни на имя | проверьте написание |

## После возврата от провайдера

Сообщения начинаются с «IdP не подтвердил вход:» и продолжаются причиной.

| Причина | Что это значит | Что сделать |
| --- | --- | --- |
| `invalid_client` / `unauthorized_client` | провайдер не принял client_id или client_secret | перепроверить оба; секрет вводится заново в форме |
| `invalid_grant` / `redirect_uri mismatch` | у провайдера зарегистрирован другой Redirect URI, либо код авторизации уже использован или истёк | скопировать Redirect URI из блока «Данные для настройки» точно, до последнего символа |
| `unexpected JWT "iss"` / issuer mismatch | Issuer URL в Buff не совпадает с тем, что провайдер пишет в токене | указать issuer ровно как в документе обнаружения (без завершающего `/`, тот же хост и схема) |
| `nonce` / `state` mismatch | вход начат в одной вкладке, а завершён в другой, или прошло больше 15 минут | начать вход заново |
| Invalid signature / Invalid document signature | SAML: подпись не сходится с сертификатом в Buff | вставить актуальный сертификат подписи провайдера; при ротации — оба |
| Unable to verify without a signature / wantAssertionsSigned | SAML: провайдер не подписывает утверждение | включить подпись утверждений у провайдера (Keycloak: Sign assertions = On) |
| SAML assertion audience mismatch | Entity ID у провайдера отличается от нашего | зарегистрировать у провайдера Entity ID из блока «Данные для настройки» (у каждой организации свой) |
| SAML assertion expired / not yet valid | часы провайдера и Buff расходятся больше чем на 5 минут | синхронизировать время на стороне провайдера (NTP) |
| InResponseTo … not found / ответ IdP уже был использован | ответ не соответствует запросу, отправленному Buff, либо повторно отправлен | начать вход заново; IdP-initiated вход не поддерживается |
| IdP не передал email | в токене или утверждении нет адреса почты | OIDC: добавить scope `email` и клейм; SAML: добавить атрибут `email` (см. примеры в [Настройке](/docs/sso/setup)) |
| аккаунт не найден, а автоматическое создание участников выключено | новый сотрудник при выключенном флажке | включить «Создавать аккаунт при первом входе» или пригласить сотрудника заранее |
| сессия входа не найдена или истекла | между началом входа и возвратом прошло больше 15 минут или вход начат в другом браузере | начать заново из той же вкладки |

## На экране входа по паролю

«Вход по паролю отключён: организация … требует единый вход» — включён режим [«Только единый вход»](/docs/sso/policy). Нажмите «Войти через SSO компании». Владелец организации может войти по паролю всегда.

## Сохранение настроек

| Сообщение | Что сделать |
| --- | --- |
| IdP недоступен или отвечает неверно | проверьте Issuer URL в браузере: по адресу `<issuer>/.well-known/openid-configuration` должен открываться JSON; провайдер должен быть доступен из интернета по https |
| issuer: только https / entry_point: только https | провайдер без TLS не принимается; исключение только для тестовых стендов |
| idp_certs: вставьте сертификат в формате PEM | сертификат должен быть обрамлён строками `-----BEGIN CERTIFICATE-----` и `-----END CERTIFICATE-----` |
| TXT-запись … не найдена | запись ещё не разошлась по DNS или опубликована с другим именем/значением; проверить `dig TXT _buff-sso.<домен>` |
| этот домен уже подтверждён другой организацией | домен занят; напишите в поддержку, если это ваш домен |

## Если ничего не помогает

Напишите в поддержку, приложив из журнала аудита время события и текст причины — этого достаточно для разбора. Секретов в журнале нет, присылать их не нужно.
