Перейти к основному содержимому

Приложение 4. Настройка SSO для Web-приложения

Конфигурация Web-сервера, поставляемая для нашего приложения, содержит отключенные (комментированные) директивы для подключения SSO-авторизации. Web-приложение поддерживает интеграцию с kerberos инфраструктурой и LDAP-каталогами, в том числе MS AD и FreeIPA.

Настройка конфигурации Web-сервера

В файле /opt/luxmsbi/conf/nginx/nginx.conf раскомментировать строку с подключением модуля ngx_http_auth_spnego_module.so:

--- nginx.conf.old  2021-10-05 17:19:58.562466594 +0300
+++ nginx.conf 2021-10-05 17:19:49.449517250 +0300
@@ -7,7 +7,7 @@

load_module /usr/lib64/nginx/modules/ngx_http_lua_module.so;
#load_module /usr/lib64/nginx/modules/ngx_http_auth_spnego_module.so;
-#load_module /usr/lib64/nginx/modules/ngx_http_auth_spnego_module_debug.so;
+load_module /usr/lib64/nginx/modules/ngx_http_auth_spnego_module_debug.so;

Модуль собирается и тестируется нами, и доступен в публичном репозитарии Luxms BI RPM ThirdParty.

Необходимо переименовать/скопировать конфигурационный файл /opt/luxmsbi/conf/nginx/conf.d/luxmsbi-sso.location.off в /opt/luxmsbi/conf/nginx/conf.d/luxmsbi-sso.location:

mv /opt/luxmsbi/conf/nginx/conf.d/luxmsbi-sso.location.off \
/opt/luxmsbi/conf/nginx/conf.d/luxmsbi-sso.location

Изменить значения в конфигурационном файле /opt/luxmsbi/conf/nginx/conf.d/luxmsbi-sso.location:

# You should change next 3 lines according to your environment
# - put your KDC domain name
# - put keytab file full path.
# Make sure the file has read permissions for user bi
# - put SPN name from keytab file without KDC domain suffix
auth_gss_realm EXAMPLE.TLD;
auth_gss_keytab /etc/bi.keytab;
auth_gss_service_name "HTTP/bi.example.tld";

Вы можете посмотреть корректные значения для конфигурационного файла в вашем Kerberos-ключе, вызовите утилиту klist:

klist -ke /opt/luxmsbi/conf/nginx/bi.keytab
Keytab name: FILE:/opt/luxmsbi/conf/nginx/bi.keytab
KVNO Principal
---- --------------------------------------------------------------------------
3 HTTP/bi.example.tld@EXAMPLE.TLD (des-cbc-crc)
3 HTTP/bi.example.tld@EXAMPLE.TLD(des-cbc-md5)
3 HTTP/bi.example.tld@EXAMPLE.TLD (arcfour-hmac)
3 HTTP/bi.example.tld@EXAMPLE.TLD (aes256-cts-hmac-sha1-96)
3 HTTP/bi.example.tld@EXAMPLE.TLD (aes128-cts-hmac-sha1-96)

Сверьте настройки в файле конфигурации со значениями из keytab-файла.

Проверка работоспособности Web-сервера

До применения измененной конфигурации запустите команду проверки:

sudo nginx -c /opt/luxmsbi/conf/nginx/nginx.conf -t

Перезапустить сервис luxmsbi-web и проверить журналы на отсутствие ошибок после перезапуска:

sudo systemctl restart luxmsbi-web
sudo systemctl status luxmsbi-web -l
sudo journalctl -u luxmsbi-web

Проверка работы модуля SPNEGO

Если целевой пользователь с заведенной в домен машиной заходит в систему с включеным отладочным модулем веб-сервера nginx ngx_http_auth_spnego_module_debug.so при включенном логировании, то в лог-файле /var/log/luxmsbi/nginx/luxmsbi-sso.debug.log отображается информация следующего вида:

2022/05/20 18:05:26 [debug] 958#958: *78798 SSO auth handling IN: token.len=0, head=0, ret=401
2022/05/20 18:05:26 [debug] 958#958: *78798 Begin auth
2022/05/20 18:05:26 [debug] 958#958: *78798 Detect SPNEGO token
2022/05/20 18:05:26 [debug] 958#958: *78798 SSO auth handling OUT: token.len=0, head=1, ret=401
2022/05/20 18:05:26 [debug] 958#958: *78798 SSO auth handling IN: token.len=0, head=0, ret=401
2022/05/20 18:05:26 [debug] 958#958: *78798 Begin auth
2022/05/20 18:05:26 [debug] 958#958: *78798 Detect SPNEGO token
2022/05/20 18:05:26 [debug] 958#958: *78798 Token decoded: YIII+wYGKwYB...
[Тело Kerberos-ticket]
2022/05/20 18:05:26 [debug] 958#958: *78798 Client sent a reasonable Negotiate header
2022/05/20 18:05:26 [debug] 958#958: *78798 GSSAPI authorizing
2022/05/20 18:05:26 [debug] 958#958: *78798 Use keytab /etc/bi.keytab
2022/05/20 18:05:26 [debug] 958#958: *78798 Using service principal: HTTP/hostname@MAIN.DOMAIN.LOCAL
2022/05/20 18:05:26 [debug] 958#958: *78798 my_gss_name HTTP/hostname@MAIN.DOMAIN.LOCAL
2022/05/20 18:05:26 [debug] 958#958: *78798 ngx_http_auth_spnego_set_bogus_authorization: bogus user set
2022/05/20 18:05:26 [debug] 958#958: *78798 user is USER_TEST@MAIN.DOMAIN.LOCAL
2022/05/20 18:05:26 [debug] 958#958: *78798 GSSAPI auth succeeded
2022/05/20 18:05:26 [debug] 958#958: *78798 SSO auth handling OUT: token.len=2303, head=1, ret=0

Данный лог информирует, что со стороны целевой пользовательской машины настройки правильные. Естественно, могут быть другие проблемы. Например, пользователь не в той группе или залогинился не под своим логином.

Если машина целевого пользователя не в домене, то будет приходить NTLM-ный токен (он намного меньше по длине) следующего вида:

2022/05/20 14:11:16 [debug] 958#958: *75240 SSO auth handling IN: token.len=0, head=0, ret=401
2022/05/20 14:11:16 [debug] 958#958: *75240 Begin auth
2022/05/20 14:11:16 [debug] 958#958: *75240 Detect SPNEGO token
2022/05/20 14:11:16 [debug] 958#958: *75240 Token decoded: TlRDFSDFSDGDDBAAAAlAAASDFDSFAAAAAAKALpHAAAADw==
2022/05/20 14:11:16 [debug] 958#958: *75240 Client sent a reasonable Negotiate header
2022/05/20 14:11:16 [debug] 958#958: *75240 GSSAPI authorizing
2022/05/20 14:11:16 [debug] 958#958: *75240 Use keytab /etc/bi.keytab
2022/05/20 14:11:16 [debug] 958#958: *75240 Using service principal: HTTP/hostname@MAIN.DOMAIN.LOCAL
2022/05/20 14:11:16 [debug] 958#958: *75240 my_gss_name HTTP/hostname@MAIN.DOMAIN.LOCAL
2022/05/20 14:11:16 [debug] 958#958: *75240 gss_accept_sec_context() failed: Unknown error:
2022/05/20 14:11:16 [debug] 958#958: *75240 GSSAPI failed

При подобных логах машина целевого пользователя настроена неправильно. И, скорее всего, машина не заведена в домен.

Интеграция с LDAP-каталогами

При необходимости настройки распределения прав в системе Luxms BI по членству в группах LDAP-каталога требуется установка компонента luxmsbi-gateway, предоставляющего API для проверки учетной записи и получения списка групп, в которой состоит пользователь.

Компонент Luxms BI Gateway использует конфигурационный файл /opt/luxmsbi/conf/luxmsbi-gateway.yml. Пример конфигурации:

# general HTTP server configuration
# address:port that server will be listening and serving on
listen: 'localhost:8889'
# logs all incoming/outgoing HTTP requests/responses
http-trace: false
# can be: error, warn, info, debug (default: "info")
log-level: 'info'
# serve HTTPS requests instead of HTTP
use-tls: false
# path to *.crt/*.pem certificate file, ignored if use-tls: false
cert-file: './localhost.crt'
# path to *.key key file, ifnored if use-tls: false
key-file: './localhost.key'
# connections timeout, global setting for all connections (default: "30s")
timeout: '30s'


# Simple config for MS AD
ad:
base: 'dc=example,dc=org'
host: 'dc-01.example.org'
port: 3268
usessl: false
binddn: 'bind-user@example.org'
bindpw: 'BindPassword'
# Specify LDAP attribute to provide as "login" at output JSON
returnAsLogin: userPrincipalName
# Filter groups to output JSON
groupFilter:
- groupname


# Simle config for OpenLDAP config:
ldap:
base: 'dc=example,dc=com'
host: 'dc-01.example.org'
port: 636
usessl: true
skipSSLCertVerify: true
binddn: 'uid=bind-user,dc=example,dc=org'
bindpw: 'BindPassword'
userSearchFilter: '(uid=%s)'
# Used for pure OpenLDAP to search user group by user DN on its member attribute
groupSearchFilter: '(&(objectClass=posixgroup)(member=%s))'
attributes:
- cn
- mail
# Specify LDAP attribute to provide as "login" at output JSON
returnAsLogin: uid
# Filter groups to output JSON
groupFilter:
- groupname
# Provide filtered group DN's
includeGroupDNs: true

# Simple config for Free IPA:
ldap:
base: 'dc=example,dc=com'
host: 'dc-01.example.org'
port: 636
usessl: true
skipSSLCertVerify: true
binddn: 'uid=ldap-sso,dc=example,dc=com'
bindpw: 'BindPassword'
userSearchFilter: '(uid=%s)'
attributes:
- mail
# Specify LDAP attribute to provide as "login" at output JSON
returnAsLogin: krbPrincipalName
# Filter groups to output JSON
groupFilter:
- group-*
# Provide filtered group DN's
includeGroupDNs: true


# Simple config for PDF converter
# html2pdf:
# chromeDevToolsURI: "http://localhost:9222"
# tmpFilesDirectory: "/tmp/"
# orientation: "landscape"
# printBackground: true
# marginTop: 0.5
# marginBottom: 0.5
# marginLeft: 0.5
# marginRight: 0.5
# paperWidth: 8.5
# paperHeight: 11.0

После установки компонента и настройки конфигурации luxmsbi-gateway необходимо выполнить следующие дополнительные действия.

Для RPM-based ОС настроить автоматический запуск и запустить сервис:

sudo systemctl enable luxmsbi-gateway --now

Для DEB-based ОС перезапустить сервис:

sudo systemctl restart luxmsbi-gateway

Проверка конфигурации Luxmsbi-gateway

При выполнении команды journalctl -u luxmsbi-gateway можем увидеть
логирование компонента luxmsbi-gateway, где будет отображаться подробная информация:

May 23 13:05:37 hostname.domain.local luxmsbi-gateway[11908]: [INFO ] AD userAndGroupsHandler for USER_TEST@MAIN.DOMAIN.LOCAL
May 23 13:05:37 hostname.domain.local luxmsbi-gateway[11908]: [DEBUG] AuthenticateExtendedLong: Getting UPN for USER_TEST@MAIN.DOMAIN.LOCAL
May 23 13:05:37 hostname.domain.local luxmsbi-gateway[11908]: [DEBUG] AuthenticateExtendedLong: Will bind as sys_USER@MAIN.DOMAIN.LOCAL, getting UPN
May 23 13:05:37 hostname.domain.local luxmsbi-gateway[11908]: [DEBUG] AuthenticateExtendedLong: Connecting to AD
May 23 13:05:37 hostname.domain.local luxmsbi-gateway[11908]: [DEBUG] AuthenticateExtendedLong: Bind as sys_USER@MAIN.DOMAIN.LOCAL with known pass
May 23 13:05:37 hostname.domain.local luxmsbi-gateway[11908]: [DEBUG] AuthenticateExtendedLong: Bind Ok
May 23 13:05:37 hostname.domain.local luxmsbi-gateway[11908]: [DEBUG] Got User: USER_TEST@MAIN.DOMAIN.LOCAL
May 23 13:05:37 hostname.domain.local luxmsbi-gateway[11908]: [DEBUG] Got cn Attr: Userov User Testovich

В случае, если в логах данные сообщения не появляются необходимо проверить настройку loglevel: debug в файле /opt/luxmsbi/conf/luxmsbi-gateway.yml.

Настройка пользовательских браузеров

Настройки SSO на стороне сервера не всегда гарантирует работу его на клиентских машинах.

Internet Explorer:

Для настройки SSO в IE, нужно зайти в настройки и добавить сайт в надежные узлы.

1-sso-browser-settings.png
2-sso-browser-settings.png

Так же, в секции надежные узлы, нужно выбрать уровень безопасности (Другой) и выбрать проверку подлинности (Автоматический вход в сеть с текущим именем пользователя и паролем). Хочу обратить внимаение - это актуально, если сайт находится в локальной сети.

3-sso-browser-settings.png

Windows 10 EDGE:

Что бы тоже самое заработало и в Microsoft Edge browser. Нужно выбрать местную интрасеть и нажать кнопку (сайты).

4-sso-browser-settings.png

Выбираем кнопку (дополнительно) и так же вставляем туда адрес нашего сайта.

5-sso-browser-settings.png

Не забываем проверить в настройках броузера (Дополнительно - > Разрешить встроенную проверку подлинности Windows) это актуально для обоих броузеров IE & Edge.

7-sso-browser-settings.png

Firefox

В строке броузера, нужно вписать about:config , согласиться (приняв риск и продолжив). Дальше нужно ввести (network.negotiate-auth.trusted-uris) далее ввести нужный сайт.

6-sso-browser-settings.png

Yandex & Chrome

Что касается этих броузеров, они берут свои настройки из IE, так что после настройки IE & Edge,
остальные будут работать, как надо.

Генерация Kerberos-ключей

Описание процедуры организации Kerberos-аутентификации для Web(HTTP/HTTPS) приложений на ОС Linux при интеграции с каталогом MS AD.

Создание сервисной учетной записи

Создание учетной записи для обеспечения Kerberos - аутентификации необходимо помнить, что Kerberos(Secret Key) ключ генерируется на основе пароля учетной записи. Поэтому необходимо обеспечить неизменность пароля или перегенерацию ключей при его изменении.

В случае использования учетной записи рабочей станции(computer) изменение пароля производится автоматически каждые 30 дней, соответсвенно необходима настройка с такой же периодичностью механизма перегенерации ключей. В гетерогенных вычислительных сетях это требует регистрации серверов Linux в домене MS AD и использование скриптового решения по генерации ключей

Для горизонтально масштабированных решений более целесообразный вариант - использование пользовательской учетной записи с применением генерации пароля из набора случайных символов с длиной, обеспечивающей защиту от взлома методом перебора - например 16 символов, и запретом на изменение пароля учетной записи.

Исходные данные:

  • Приложение доступно по адресу - http://www.example.org/application
  • Домен MS AD - example.org
  • Сервисная учетная запись - service-account

Регистрация Service Principal Name (SPN)

Формат имени сервисной учетной записи для Web-приложений, независимо от использования SSL-шифрования, имеет следующий вид:

default

HTTP/<web-service>**@**<REALM>

где:

  • web_service - URL, DNS-имя web-приложения
  • REALM - имя Kerberos REALM, обычно совпадает с именем домена MS AD, символами верхнего регистра

например: HTTP/www.example.org@EXAMPLE.ORG

:::

Регистрация сервисных учетных записей производится с использованием утилит командной строки в ОС Windows, под доменной учетной записью, обладающей полномочиями для изменения учетных записей, достаточно только предоставление прав на изменение конкретных учетных записей.

Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.

C:\>setspn -A HTTP/www.example.org@EXAMPLE.ORG example\service-account
Checking domain DC=example,DC=org

Registering ServicePrincipalNames for CN=service-account,DC=example,DC=org
HTTP/www.example.org@EXAMPLE.ORG
Updated object

Выполняется регистрация всех необходимых сервисных учетных записей. Возможна также регистрация сервисных учетных записей на короткие(NetBIOS) имена систем, IP-адреса.

Проверка сгенерированных SPN

Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.

C:\>setspn -L example\service-account
Registered ServicePrincipalNames for CN=service-account,DC=example,DC=org:
HTTP/www.example.org@EXAMPLE.ORG
HTTP/www@EXAMPLE.ORG


c:\>ldifde -d "CN=service-account,DC=example,DC=org" -l "userPrincipalName,servicePrincipalName,msDS-KeyVersionNumber" -f account.ldif
Connecting to "dc-01.example.org"
Logging in as current user using SSPI
Exporting directory to file account.ldif
Searching for entries...
Writing out entries.
1 entries exported

The command has completed successfully

c:\temp>type account.ldif
dn: CN=service-account,DC=example,DC=org
changetype: add
userPrincipalName: service-account@example.org
servicePrincipalName: HTTP/www.example.org@EXAMPLE.ORG
servicePrincipalName: HTTP/www@EXAMPLE.ORG
msDS-KeyVersionNumber: 2

Генерация ключей

При генерации ключей для нескольких SPN основной момент - сохранение KVNO(Key Value Number), изменение KVNO в процессе генерации ключей приведет к неработоспособности части ключей. Поэтому обратите внимание на ключ -setpass в вызове генерации ключей для второго и последующих SPN.

Для генерации последовательности случайных символов для пароля можно использовать утилиту командной строки openssl.

$ openssl rand -base64 20
jgDMj2KvZSqkEw2yWVxIVrfptGo=

Используем секретный пароль при генерации ключей

Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.

c:\temp>ktpass /mapuser example\service-account /princ HTTP/www.example.org@EXAMPLE.ORG /ptype KRB5_NT_PRINCIPAL /pass jgDMj2KvZSqkEw2yWVxIVrfptGo /crypto ALL /out key-1.keytab +answer
Targeting domain controller: dc-01.example.org
Successfully mapped HTTP/www.example.org to service-account.
Password successfully set!
Key created.
Key created.
Key created.
Key created.
Key created.
Output keytab to key-1.keytab:
Keytab version: 0x502
keysize 71 HTTP/www.example.org@EXAMPLE.ORG ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype 0x1 (DES-CBC-CRC) keylength 8 (0x5e6befd37c4913ba)
keysize 71 HTTP/www.example.org@EXAMPLE.ORG ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype 0x3 (DES-CBC-MD5) keylength 8 (0x5e6befd37c4913ba)
keysize 79 HTTP/www.example.org@EXAMPLE.ORG ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype 0x17 (RC4-HMAC) keylength 16 (0xe8256a4b795e15a4ade75b5faa040be1)
keysize 95 HTTP/www.example.org@EXAMPLE.ORG ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype 0x12 (AES256-SHA1) keylength 32 (0xd520e8aed124bb5213cba436d3e9d6cd1d5ba54fdd5919e406aa185977dd121a)
keysize 79 HTTP/www.example.org@EXAMPLE.ORG ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype 0x11 (AES128-SHA1) keylength 16 (0xe14a7e0e13917c1165f5b8848f00c20f)

c:\temp>ktpass /mapuser example\service-account /princ HTTP/www@EXAMPLE.ORG /ptype KRB5_NT_PRINCIPAL /pass jgDMj2KvZSqkEw2yWVxIVrfptGo -setpass /kvno 3 /crypto ALL /in key-1.keytab /out http.keytab -setupn
Existing keytab:

Keytab version: 0x502
keysize 71 HTTP/www@EXAMPLE.ORGD ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype 0x1 (DES-CBC-CRC) keylength 8 (0x5e6befd37c4913ba)
keysize 71 HTTP/www@EXAMPLE.ORG ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype 0x3 (DES-CBC-MD5) keylength 8 (0x5e6befd37c4913ba)
keysize 79 HTTP/www@EXAMPLE.ORG ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype 0x17 (RC4-HMAC) keylength 16 (0xe8256a4b795e15a4ade75b5faa040be1)
keysize 95 HTTP/www@EXAMPLE.ORG ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype 0x12 (AES256-SHA1) keylength 32 (0xd520e8aed124bb5213cba436d3e9d6cd1d5ba54fdd5919e406aa185977dd121a)
keysize 79 HTTP/www@EXAMPLE.ORG ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype 0x11 (AES128-SHA1) keylength 16 (0xe14a7e0e13917c1165f5b8848f00c20f)
Targeting domain controller: gvc-dc-02.gvc.oao.rzd
Successfully mapped HTTP/www to service-account.
Key created.
Key created.
Key created.
Key created.
Key created.
Output keytab to http.keytab:
Keytab version: 0x502
keysize 71 HTTP/www.example.org@EXAMPLE.ORG ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype 0x1 (DES-CBC-CRC) keylength 8 (0x5e6befd37c4913ba)
keysize 71 HTTP/www.example.org@EXAMPLE.ORG ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype 0x3 (DES-CBC-MD5) keylength 8 (0x5e6befd37c4913ba)
keysize 79 HTTP/www.example.org@EXAMPLE.ORG ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype 0x17 (RC4-HMAC) keylength 16 (0xe8256a4b795e15a4ade75b5faa040be1)
keysize 95 HTTP/www.example.org@EXAMPLE.ORG ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype 0x12 (AES256-SHA1) keylength 32 (0xd520e8aed124bb5213cba436d3e9d6cd1d5ba54fdd5919e406aa185977dd121a)
keysize 79 HTTP/www.example.org@EXAMPLE.ORG ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype 0x11 (AES128-SHA1) keylength 16 (0xe14a7e0e13917c1165f5b8848f00c20f)
keysize 71 HTTP/www@EXAMPLE.ORGD ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype 0x1 (DES-CBC-CRC) keylength 8 (0x25a8e3403d4a342c)
keysize 71 HTTP/www@EXAMPLE.ORG ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype 0x3 (DES-CBC-MD5) keylength 8 (0x25a8e3403d4a342c)
keysize 79 HTTP/www@EXAMPLE.ORGD ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype 0x17 (RC4-HMAC) keylength 16 (0xe8256a4b795e15a4ade75b5faa040be1)
keysize 95 HTTP/www@EXAMPLE.ORG ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype 0x12 (AES256-SHA1) keylength 32 (0x452317c637a6ef2b236ef9e9232d03dc3ae95a85f5132e3274710a5cb9c0c9c4)
keysize 79 HTTP/www@EXAMPLE.ORG ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype 0x11 (AES128-SHA1) keylength 16 (0x0917d8ff99a2b30e381a3e53ce0b5420)

По результатам генерации сохраняем http.keytab и можем также сохранить пароль - пароль можно использовать для проверки работоспособности сервисной учетной записи. Если пароль случайно утерян, это не повлияет на работоспособность Kerberos-аутентификации.

Установка и проверка работоспособности

Установка файла http.keytab, классически производится в папку /etc, но в нашем случае установка возможна и в локальные папки приложения. Главное в обоих случаях дать разрешения файловой системы, достаточные для чтения файла владельцу процесса NGinx.

Настройка NGinx

Настройка ОС

includedir /etc/krb5.conf.d/

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

[libdefaults]
default_keytab_name=bi5.keytab
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
pkinit_anchors = /etc/pki/tls/certs/ca-bundle.crt
default_realm = EXAMPLE.ORG
default_ccache_name = KEYRING:persistent:%{uid}

[realms]
YASP.COM = {
kdc = dc-01.example.org
admin_server = dc-01.example.org
}

[domain_realm]
.example.org = EXAMPLE.ORG
example.org = EXAMPLE.ORG

Установка файла http.keytab, классически производится в директрию /etc, но в нашем случае установка возможна и в локальные папки приложения. Главное в обоих случаях дать разрешения файловой системы, достаточные для чтения файла владельцу процесса NGinx.

    auth_gss on;
auth_gss_realm EXAMPLE.ORG;
auth_gss_keytab /etc/http.keytab;
auth_gss_service_name HTTP/www.example.org;
auth_gss_format_full on;
auth_gss_allow_basic_fallback off;
proxy_set_header Authorization "";
proxy_set_header X-Forwarded-User $remote_user;

Настройка прав в приложении Luxms BI

Настройка распределения прав выполняется прикладным Администратором приложения и не входит в область системного администрирования.