- Print
- DarkLight
- PDF
Kerberos - Настройка доменной авторизации для одного домена
Настройка файлов конфигурации AD
1. В домене создать технического системного пользователя и добавить spn для него, например:
Логин: doczilla
Пароль: doczPswd!
описание команды:
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/cc731241(v=ws.11)
пример команды:
setspn -A HTTP/doczilla.testdomain.local doczilla
2. Создать krb5.keytab файл, с параметрами созданного системного пользователя.
описание команды: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/ktpass
пример команды, верхний и нижний регистр очень важен:
ktpass -princ HTTP/doczilla.testdomain.local@TESTDOMAIN.LOCAL -mapuser doczilla@testdomain.local -crypto ALL -ptype KRB5_NT_PRINCIPAL -pass doczPswd! -out krb5.keytab
Если используется шифрование AES256-SHA1
Необходимо в Свойствах системной учетной записи в AD поставить галку «Поддержка Kerberos AES 256»
3. В папке проекта по пути ./conf/spnego/ доступны шаблоны конфигурационных файлов:
- jaas.conf
- krb5.ini
их нужно или вынести за пределы проекта (по умолчанию в /opt/doczilla/conf/spnego/), или при обновлении проекта шаблоны файлов не перезаписывать.
4. Файл krb5.keytab полученный в п.2 скопировать в папку(по умолчанию в /opt/doczilla/conf/spnego/) с файлами конфигурации из п.3
5. Скопированные файлы из п.3 отредактировать согласно комментариям внутри файлов
6. В файле проекта, путь по умолчанию /opt/doczilla/bin/service.sh
- Раскомментируйте для включения расширенных логов для отладки, режим доменной авторизации и замените наименование домена, в переменной (обязательно Большими Буквами):
DEBUG="true"
SSO="SPNEGO"
DOMAIN="TESTDOMAIN.LOCAL"
- замените значения переменных приведенных ниже, если файлы конфигов перенесли:
JAVA_OPTS="$JAVA_OPTS -Djava.security.krb5.conf=$HOME/conf/spnego/krb5.ini"
JAVA_OPTS="$JAVA_OPTS -Djava.security.auth.login.config=$HOME/conf/spnego/jaas.conf"
- посмотреть содержимое файла ”krb5.keytab”
ktutil
ktutil: read_kt krb5.keytab
ktutil: list
##или командой
klist -kte krb5.keytab
7. Настройка доверенной зоны
Для работы доменной авторизации Internet Explorer должен учитывать, что запрошенный URL-адрес находится в интрасети (локальной).
описание: https://docs.microsoft.com/en-us/troubleshoot/browsers/prompt-for-username-and-password
Запустите "Панель управления" - "Свойства браузера" - вкладка "Безопасность" - "Местная интрасеть" - кнопка "Сайты" - кнопка "Дополнительно" - добавить в зону сайт приложения - кнопка "Добавить" - "Закрыть"
Содержимое шаблонов
jaas.conf:
/**
replace principal with "HTTP/<doczilla-address>@<DOMAIN-REALM>"
replace keyTab path if different
*/
com.sun.security.jgss.initiate {
com.sun.security.auth.module.Krb5LoginModule required
principal="HTTP/doczilla.testdomain.local@TESTDOMAIN.LOCAL"
keyTab="/opt/doczilla/conf/spnego/krb5.keytab"
useKeyTab=true
storeKey=true
debug=true
isInitiator=false;
};
com.sun.security.jgss.accept {
com.sun.security.auth.module.Krb5LoginModule required
principal="HTTP/doczilla.testdomain.local@TESTDOMAIN.LOCAL"
useKeyTab=true
keyTab="/opt/doczilla/conf/spnego/krb5.keytab"
storeKey=true
debug=true
isInitiator=false;
};
krb5.ini:
# replace default_realm
# replace default_keytab_name if different
[libdefaults]
default_realm = TESTDOMAIN.LOCAL
default_keytab_name = FILE:/opt/doczilla/conf/spnego/krb5.keytab
permitted_enctypes = aes128-cts aes256-cts arcfour-hmac-md5
default_tgs_enctypes = aes128-cts aes256-cts arcfour-hmac-md5
default_tkt_enctypes = aes128-cts aes256-cts arcfour-hmac-md5
# replace. kdc - Key distribution center
[realms]
TESTDOMAIN.LOCAL = {
kdc = testdomain.local
admin_server = testdomain.local
default_domain = testdomain.local
}
# replace
[domain_realm]
.testdomain.local = TESTDOMAIN.LOCAL
[appdefaults]
autologin = true
forwardable = true
Возможные ошибки
1. При выполнении утилиты ktpass можно получить следующую ошибку
Password set failed! 0x00000020
- Данная ошибка возникает в том случае, если используемый при генерации keytab файла технический пользователь содержит в своем DN-пути не латинские символы - например, кириллицу. Единственным верным решением будет перенести данного пользователя в расположение с латинскими символами - например, в стандартный контейнер Users. По завершению генерации keytab файла, пользователя можно будет вернуть на его прежнее место.