1С, авторизация через AD
Задача: Настроить 1С сервер установленный на Linux таким образом, чтобы авторизация пользователей осуществлялась через контроллер домена, то есть доменный пользователь входя в 1С не должен ввводить пароль.
IP контроллеров домена, они же DNS сервера: 172.16.1.16, 172.16.1.19
Сетевое имя одного из контроллеров домена: server-dc1
Сетевое имя сервера 1С: SERVER-1S
ОС сервера 1С: Debian GNU/Linux 7 (wheezy)
Все нижеследующее работает на "Debian GNU/Linux 8 (jessie)" + 1С версии 8.3.9.1850
1. Настраиваем DNS на сервере 1С:
nano /etc/resolv.conf
в моем случае содержание resolv.conf следующее:
domain domainname.ru search domainname.ru nameserver 172.16.1.16 nameserver 172.16.1.19
Имя сервера 1С должно быть вручную зарегистрировано на DNS сервере.
Ping должен выглядеть следующим образом:
root@SERVER-1S:~# ping server-1s PING SERVER-1S.domainname.ru (127.0.1.1) 56(84) bytes of data. 64 bytes from SERVER-1S.domainname.ru (127.0.1.1): icmp_req=1 ttl=64 time=0.031 ms
2. Синхронизируем время на сервере 1С с контроллером домена.
3. Выясняем имя учетной записи от которой работает сервер 1С
cat /etc/passwd| grep 1c
4. На контроллере домена создаем учетную запись с паролем "1cv8password" и запрещаем смену пароля пользователем.
5. На контроллере домена выполняем следующую комманду
ktpass -princ usr1cv8/server-1s.domainname.ru@DOMAINNAME.RU -mapuser usr1cv8 -pass 1cv8password -out usr1cv8.keytab
usr1cv8 - учетная запись от имени которой работает сервер 1С, а так-же учетная запись в AD
server-1s - сетевое имя узла, на котором запущен сервер 1С, можно выяснить командой hostname
1cv8password - пароль доменного пользователя usr1cv8
В результате должен сформироваться файл usr1cv8.keytab.
6. Полученный в предыдущем пункте файл, копируем в на сервер 1С в директорию /opt/1C/v8.3/x86_64/ и устанавливаем на него необходимые права:
chown usr1cv8:grp1cv8 usr1cv8.keytab chmod 600 usr1cv8.keytab
7. На сервере 1С Устанавливаем базовый набор утилит для работы Kerberos аутентификацией
apt-get install krb5-user
nano /etc/krb5.conf
В моем случае содержание файла следующее:
[logging]
default = FILE:/var/log/krb5libs.log
default = SYSLOG:DEBUG:DAEMON
kdc = FILE:/var/log/krb5kdc.log
kdc = SYSLOG:DEBUG:DAEMON
admin_server = FILE:/var/log/kadmind.log
admin_server = SYSLOG:DEBUG:DAEMON
[libdefaults]
default_realm = DOMAINNAME.RU
dns_lookup_realm = false
dns_lookup_kdc = false
default_tkt_enctypes = rc4-hmac
default_tgs_enctypes = rc4-hmac
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
v4_instance_resolve = false
v4_name_convert = {
host = {
rcmd = host
ftp = ftp
}
plain = {
something = something-else
}
}
fcc-mit-ticketflags = true
[realms]
DOMAINNAME.RU = {
kdc = server-dc1.domainname.ru:88
default_domain = domainname.ru
}
[domain_realm]
domainname.ru = DOMAINNAME.RU
.domainname.ru = DOMAINNAME.RU
DOMAINNAME.RU = DOMAINNAME.RU
.DOMAINNAME.RU = DOMAINNAME.RU
[appdefaults]
pam = {
debug = true
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = false
krb4_convert = false
}klist -e -k -t /opt/1C/v8.3/x86_64/usr1cv8.keytab
результат должен быть следующим:
Keytab name: FILE:/opt/1C/v8.3/x86_64/usr1cv8.keytab KVNO Timestamp Principal ---- ------------------- ------------------------------------------------------ 8 01.01.1970 07:00:00 usr1cv8/server-1s.domainname.ru@DOMAINNAME.RU (arcfour-hmac)
kinit -k -t /opt/1C/v8.3/x86_64/usr1cv8.keytab usr1cv8/server-1s.domainname.ru@DOMAINNAME.RU
В результате программа kinit должна отработать без каких-либо сообщений, не спрашивать никаких паролей и вернуть управление обратно в командную строку.
10. В 1С настраиваем параметры пользователя как на картинке (используем полное имя домена):