Здравствуйте. Имеется Windows Server 2022 и Ubuntu Server 24.04 (LAMP).
Необходимо настроить автоматическую (прозрачную) авторизацию пользователей в GLPI через учётные данные из Active Directory…
Система инвентаризации и поддержки GLPI установлена на Ubuntu Server. Необходимо сделать так, чтобы при заходе на поддомен, например «glpi.mycompany.tld» пользователи авторизовались бы автоматически со своими данными из Active Directory.
Для веб-сервера Apache (на Ubuntu Server) установлен модуль «
auth_gssapi_module».
Присутствует в системе ".keytab" файл (/etc/krb5.keytab). Когда я проверяю его на Ubuntu Server командой:
kinit -5 -V -k -t /etc/krb5.keytab HTTP/glpi.mycompany.tld@MYCOMPANY.TLD
То, получаю успешный ответ: "
Authenticated to Kreberos v5". Это правильно.
(На Windows Server у меня есть отдельный аккаунт с привязанным SPN: «
HTTP/glpi.mycompany.tld»)
Но, в итоге, никакого эффекта не получаю. При входе любого пользователя всё также встречает окно с авторизацией в GLPI…
P.S. Очень надеюсь на помощь в решении этого вопроса с прозрачной авторизацией!
P.P.S. Если ещё какие-то конфиги нужны для понимания «картины» вопроса, то напишите…
Привожу следующие конфиги:
1) Kerberos конфиг (
krb5.conf) (/etc/krb5.conf)
2) sssd конфиг (
sssd.conf) (/etc/sssd/sssd.conf)
3) GLPI конфиг в Apache (
glpi.conf) (/etc/apache2/sites-available/glpi.conf)
Файл /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
udp_preference_limit = 0
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
fcc-mit-ticketflags = true
default_realm = mycompany.tld
default_keytab_name = FILE:/etc/krb5.keytab
ticket_lifetime = 24h
dns_lookup_realm = false
dns_lookup_kdc = false
# AD in 2008+? Using AES
default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
[realms]
MYCOMPANY.TLD = {
kdc = dc1.mycompany.tld:88
master_kdc = dc1.mycompany.tld:88
admin_server = dc1.mycompany.tld:88
default_domain = mycompany.tld
}
[domain_realm]
.mycompany.tld = MYCOMPANY.TLD
mycompany.tld = MYCOMPANY.TLD
Файл /etc/sssd/sssd.conf
[sssd]
domains = mycompany.tld
config_file_version = 2
services = nss, pam
[domain/mycompany.tld]
default_shell = /bin/bash
ad_server = dc1.mycompany.tld
krb5_store_password_if_offline = True
cache_credentials = True
krb5_realm = mycompany.tld
realmd_tags = manages-system joined-with-adcli
id_provider = ad
fallback_homedir = /home/%u@%d
ad_domain = mycompany.tld
use_fully_qualified_names = True
ldap_id_mapping = True
access_provider = ad
Файл /etc/apache2/sites-available/glpi.conf
# Start of the VirtualHost configuration for port 80
<VirtualHost *:80>
ServerName glpi.mycompany.tld
# Specify the server's hostname
DocumentRoot /var/www/html/glpi/public
# The directory where the website's files are located
# Start of a Directory directive for the website's directory
<Directory /var/www/html/glpi/public>
AuthType GSSAPI
AuthName "My domain"
GssapiCredStore keytab:/etc/krb5.keytab
GssapiAcceptorName HTTP
GssapiBasicAuthMech krb5
GssapiBasicAuth Off
GssapiNegotiateOnce On
GssapiSSLonly Off
GssapiLocalName On
# Use a cookie to keep the session, avoid reauthenticate user on each page
# (facultative)
GssapiUseSessions On
GssapiDelegCcacheDir /run/apache2/clientcaches
<IfModule mod_session.c>
Session on
</IfModule>
<IfModule mod_session_cookie.c>
SessionCookieName gssapi_session path=/;httponly;secure;
</IfModule>
Require valid-user
Require all granted
# Allow all access to this directory
RewriteEngine On
# Enable the Apache rewrite engine
# Ensure authorization headers are passed to PHP.
# Some Apache configurations may filter them and break usage of API, CalDAV, ...
RewriteCond %{HTTP:Authorization} ^(.+)$
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect all requests to GLPI router, unless the file exists.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</Directory>
# End of the Directory directive for /var/www/glpi/public
</VirtualHost>
# End of the VirtualHost configuration for port 80