MSSQL Error 17805: User mismatch occurred during login negotiation
- Ошибка в логе SQL Server:
Error: 17805, Severity: 16, State: 3. User mismatch occurred during login negotiation. - Клиентские приложения и фоновые задания 1С не могут подключиться к базе, возвращая
SSPI context error. - Сбои происходят при переключении контекста безопасности между веб-клиентом 1С, сервером приложений и СУБД (Kerberos Double-Hop).
1. Анализ механизма возникновения ошибки 17805
Ошибка 17805 возникает, когда имя пользователя, передаваемое в пакете инициализации TDS (Tabular Data Stream), не совпадает с учетными данными, извлеченными ядром из токена безопасности Windows/Kerberos (Security Token Mismatch).
2. Проверка билетов Kerberos на сервере приложений 1С
:: Просмотр закешированных билетов Kerberos
klist
:: Очистка устаревших билетов на сервере 1С
klist purge3. Проверка настроек Service Principal Name (SPN)
:: Проверка зарегистрированных SPN для учетной записи службы SQL
setspn -L DOMAIN\sql_service_accountУбедитесь, что нет дублирующихся записей SPN в домене Active Directory:
setspn -X4. Настройка делегирования Kerberos (Constrained Delegation)
Если используется связка IIS / Web-сервис 1С -> Сервер 1С -> MSSQL, в свойствах учетной записи службы 1С в оснастке Active Directory Users and Computers должно быть включено Trust this user for delegation to specified services only (Kerberos only) для службы MSSQLSvc целевого сервера.
5. Перевод строки подключения 1С на явный SQL Login (быстрый воркэраунд)
В консоли администрирования кластера 1С переключите способ подключения к СУБД с аутентификации Windows на стандартную аутентификацию SQL Server (по логину и паролю usr1cv8).
Частые вопросы (FAQ)
Почему ошибка 17805 возникает при использовании NTLM вместо Kerberos?
При деградации авторизации до NTLM в средах с промежуточными прокси-серверами или балансировщиками сессия может передавать токен локального пользователя вместо доменного.
Как исправить дубликаты SPN при выводе команды setspn -X?
Удалите ошибочный SPN с ненужной учетной записи командой setspn -D MSSQLSvc/your_sql_server.domain:1433 DOMAIN\old_account.
Помогает ли перезапуск службы сервера 1С:Предприятие?
Да, перезапуск служб ragent/rphost сбрасывает кэш дескрипторов безопасности LSA (Local Security Authority).
Влияет ли рассинхронизация времени на ошибку 17805?
Да, если разница во времени между контроллером домена, сервером 1С и SQL Server превышает 5 минут, аутентификация Kerberos полностью блокируется.