Настройка сквозной аутентификации SSO (Kerberos) в тонком клиенте 1С
- При запуске тонкого клиента запрашивается логин и пароль вместо автоматического входа под доменной учетной записью.
- Ошибка
Аутентификация по протоколу Kerberos не удаласьпри старте сеанса. - Ошибка
KDC has no support for encryption typeв логах безопасности. - Невозможность настроить SSO для серверов 1С под управлением Linux в домене Windows AD.
1. Архитектура Single Sign-On (SSO) в 1С
Для реализации беспарольного входа по протоколу Kerberos сервер 1С должен иметь зарегистрированное имя сервиса (SPN) в Active Directory / FreeIPA и валидный файл секретных ключей (keytab).
2. Регистрация SPN и создание Keytab в Active Directory
На контроллере домена выполните команду от имени администратора домена:
# 1. Создание сервисной учетной записи: usr1c_srv
# 2. Привязка SPN и экспорт keytab-файла
ktpass /princ 1CSRV/srv-1c.corp.local@CORP.LOCAL \
/mapuser usr1c_srv@CORP.LOCAL \
/crypto AES256-SHA1 \
/ptype KRB5_NT_PRINCIPAL \
/pass "ComplexPassword123" \
/out C:\temp\1c-server.keytab3. Настройка Kerberos на Linux-сервере 1С
Скопируйте 1c-server.keytab в /opt/1cv8/conf/1c-server.keytab и настройте конфигурационный файл /etc/krb5.conf:
[libdefaults]
default_realm = CORP.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = true
default_tkt_enctypes = aes256-cts-hmac-sha1-96
default_tgs_enctypes = aes256-cts-hmac-sha1-96
[realms]
CORP.LOCAL = {
kdc = dc1.corp.local
admin_server = dc1.corp.local
}Выставите права доступа на keytab:
sudo chown usr1cv8:grp1cv8 /opt/1cv8/conf/1c-server.keytab
sudo chmod 600 /opt/1cv8/conf/1c-server.keytab4. Конфигурация файла /opt/1cv8/conf/container.cfg
Укажите серверу 1С путь к keytab файлу:
<config>
<keytab-file>/opt/1cv8/conf/1c-server.keytab</keytab-file>
</config>5. Настройка пользователя в конфигураторе 1С
- Откройте информационную базу в Конфигураторе -> Администрирование -> Пользователи.
- В свойствах пользователя выставите флаг Аутентификация операционной системы.
- Укажите имя в формате домена:
CORP\ivanovилиivanov@CORP.LOCAL.
Частые вопросы (FAQ)
Что такое SPN и почему важен правильный регистр?
SPN (Service Principal Name) — уникальный идентификатор службы в домене. Для 1С формат строго фиксирован: 1CSRV/<FQDN_сервера>@REALM. Несовпадение FQDN приведет к отказу в выдаче тикета Kerberos.
Работает ли SSO Kerberos через веб-клиент в браузере?
Да, но требует дополнительной настройки модуля SPNEGO / mod_auth_gssapi на веб-сервере Apache или Windows Authentication в IIS.
Как проверить валидность keytab файла на сервере Linux?
Используйте утилиту klist: klist -k -t /opt/1cv8/conf/1c-server.keytab, а затем проверьте получение тикета: kinit -k -t /opt/1cv8/conf/1c-server.keytab 1CSRV/srv-1c.corp.local@CORP.LOCAL.
Почему SSO не работает при подключении по IP-адресу вместо DNS имени?
Протокол Kerberos фундаментально привязан к полным доменным именам (FQDN). При подключении по IP протокол Kerberos отклоняется и клиент пытается перейти на NTLM, который не всегда поддерживается Linux сервером.