GLPI: le guide SSO
Tu veux mettre en place de la SSO Kerberos sur GLPI avec GssAPI Apache 2? Bienvenue! 😊
Installation du client Kerberos et du module Apache gssapi. Configuration du client kerberos.
apt install libapache2-mod-auth-gssapi krb5-user
nano /etc/krb5.conf[libdefaults]
default_realm = TONDOMAINE.COM
dns_lookup_realm = false
dns_lookup_kdc = false
[realms]
FRR.COM = {
kdc = IP SERVER AD
kdc = IP SERVER AD 2
admin_server = IP SERVER AD
admin_server = IP SERVER AD 2
}
[domain_realm]
.tondomaine.com = TONDOMAINE.COM
tondomaine.com = TONDOMAINE.COMCréation d’un compte de service GLPi dans AD utilisé pour mapper le service http Glpi et le présenter à Kerberos. Utiliser un mot de passe fixe sans expiration, cocher la prise en charge AES 256.
Sur le contrôleur de domaine, lancer l’invite de commande en tant qu’administrateur afin de créer le fichier keytab
ktpass -princ HTTP/[email protected] -mapuser [email protected] -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -out C:\tmp\glpi.keytabEnvoyer le fichier dans le répertoire apache et le sécuriser pour l’utilisateur apache
chown www-data:www-data glpi.keytab
chmod 640 glpi.keytabConfigurer le vHOST Apache pour GLPI
<VirtualHost *:443>
ServerName tonserveur.tondomaine.com
DocumentRoot /var/www/glpi/public
SSLEngine on
SSLCertificateFile /etc/ssl/certs/toncert.pem
SSLCertificateKeyFile /etc/ssl/private/tapv.key
SSLCACertificateFile /etc/ssl/certs/tonac.pem
ErrorLog /var/log/apache2/glpi-error.log
<Directory /var/www/glpi/public>
AuthType GSSAPI
AuthName "GLPI SSO"
GssapiCredStore keytab:/etc/apache2/glpi.keytab
Require valid-user
#autorise l'agent à bypass SSO
<If "%{HTTP_USER_AGENT} =~ /GLPI-Agent_v/">
Require all granted
</If>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
Options +FollowSymlinks
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://localhost/"
</FilesMatch>
</VirtualHost>Enfin dans GLPI / ACCUEIL / CONFIGURATION / AUTHENTIFICATION /AUTRES:Champs de stockage de l'identifiant dans la requête HTTP choisir REMOTE_USER