Настройка файлов конфигурации AD
Рассмотрим на примере: Приложением пользуются сотрудники из двух разных доменов, и web-сайт размещён в другой отдельной доменной зоне:
Домены: KUBIK.COM и RUBIK.COM
Web-сайт: doczilla.kubikrubik.com (или может находиться в одном из рассматриваемых доменов, например: doczilla.kubik.com)
1. На контроллере AD каждого домена создать техническую учетную запись пользователя и добавить Service Principal Names (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.kubikrubik.com doczilla2. На сервере приложения создать в /opt/doczilla/cong/spnego/ отдельные директории под каждый домен и скопировать туда по 2 конфигурационных файла (jaas.conf, krb5.ini)
cd /opt/doczilla/cong/spnego/
mkdir /opt/doczilla/conf/spnego/kubik.com
cp ./jaas.conf ./kubik.com/
cp ./krb5.ini ./kubik.com/
mkdir /opt/doczilla/conf/spnego/rubik.com
cp ./jaas.conf ./rubik.com/
cp ./krb5.ini ./rubik.com/3. На контроллере AD каждого домена создать отдельный «krb5.keytab»
описание команды: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/ktpass
пример команды:
ktpass -princ HTTP/doczilla.kubikrubik.com@KUBIK.COM -mapuser doczilla@kubik.com -crypto ALL -ptype KRB5_NT_PRINCIPAL -pass doczPswd! -out c:\temp\kubik\krb5.keytab
ktpass -princ HTTP/doczilla.kubikrubik.com@RUBIK.COM -mapuser doczilla@rubik.com -crypto ALL -ptype KRB5_NT_PRINCIPAL -pass doczPswd! -out c:\temp\rubik\krb5.keytabПолученные файлы скопировать на сервер приложения в свои соответствующие папки:
/opt/doczilla/conf/spnego/kubik.com/
/opt/doczilla/conf/spnego/rubik.com/
Если в домене используется шифрование AES256-SHA1. Необходимо в Свойствах технической системной учетной записи в AD поставить галку «Поддержка Kerberos AES 256»

4. Необходимо отредактировать под свой домен все шаблоны конфигурационных файлов согласно комментариям внутри файлов:
- jaas.conf
- krb5.ini
(при обновлении проекта шаблоны файлов не перезаписывать)
5. В файле проекта ./bin/service.sh
- Включите режим расширенных логов для отладки, раскомментируйте:
DEBUG="true"
- Включите режим мультидоменной авторизации:
SSO="MULTISPNEGO"
- Замените наименование домена, в переменной (обязательно Большими Буквами). Указываем не домены пользователей, а который один для всех:
DOMAIN="KUBIKRUBIK.COM"
6. Добавление сайта в доверенную зону
Для работы доменной авторизации запрошенный URL-адрес должен находится в интрасети (локальной).
описание: https://docs.microsoft.com/en-us/troubleshoot/browsers/prompt-for-username-and-password
Запустите "Панель управления" - "Свойства браузера" - вкладка "Безопасность" - "Местная интрасеть" - кнопка "Сайты" - кнопка "Дополнительно" - добавить в зону сайт приложения doczilla.kubikrubik.com - кнопка "Добавить" - "Закрыть"

7. Пример конфигов для мультидоменной авторизации
Пример файла jaas.conf для домена KUBIK.COM
com.sun.security.jgss.initiate {
com.sun.security.auth.module.Krb5LoginModule required
principal="HTTP/doczilla.kubikrubik.com@KUBIK.COM"
keyTab="/opt/doczilla/conf/spnego/kubik.com/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.kubikrubik.com@KUBIK.COM"
keyTab="/opt/doczilla/conf/spnego/kubik.com/krb5.keytab"
useKeyTab=true
storeKey=true
debug=true
isInitiator=false;
};
Пример файла krb5.ini для домена KUBIK.COM
[libdefaults]
default_realm = KUBIK.COM
default_keytab_name = FILE:/opt/doczilla/conf/spnego/kubik.com/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]
KUBIK.COM = {
kdc = kubik.com
admin_server = kubik.com
default_domain = kubik.com
}
# replace
[domain_realm]
.kubik.com = KUBIK.COM
[appdefaults]
autologin = true
forwardable = true
Пример файла jaas.conf для домена RUBIK.COM
com.sun.security.jgss.initiate {
com.sun.security.auth.module.Krb5LoginModule required
principal="HTTP/doczilla.kubikrubik.com@RUBIK.COM"
keyTab="/opt/doczilla/conf/spnego/rubik.com/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.kubikrubik.com@RUBIK.COM"
keyTab="/opt/doczilla/conf/spnego/rubik.com/krb5.keytab"
useKeyTab=true
storeKey=true
debug=true
isInitiator=false;
};
Пример файла krb5.ini для домена RUBIK.COM
[libdefaults]
default_realm = RUBIK.COM
default_keytab_name = FILE:/opt/doczilla/conf/spnego/rubik.com/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]
RUBIK.COM = {
kdc = rubik.com
admin_server = rubik.com
default_domain = rubik.com
}
# replace
[domain_realm]
.rubik.com = RUBIK.COM
[appdefaults]
autologin = true
forwardable = true