You are not logged in.
salut ,
Après plusieurs tentatives d’implémentation d SSO dans mon LAB, j'ai perdu la bout de fil alors la meilleur pour poser mon question est avoir de l'aide c'est La devant vous,
tous simplement, j'utilise GLPI Version 9.2.3 installé sur un machine qui run Ubuntu, Active directory s’exécute sur un serveur Windows serveur 2012.
Comment je peut implémenté le SSO dans cette environnement, sur internet j'ai trouver plusieurs tutos mais le Prob c'est que tous utilisent des version ultérieur très ancienne pour les Version 9.xx je n'ai tomber sur Rien.
sincèrement,
Offline
Is this true about it
After numerous weeks, Teclib’ is satisfied to announce the discharge of GLPI nine.2.3.
you may download the nine.2.3 archive on github.
You’ll discover beneath the changes of this bugfixes model:
cover closed obligations on crucial,
brief search in stored searches panel,
fix image in FAQ for nameless customers,
possibility to add an analytics javascript,
diverse fixes on additives,
and lots of more!
Offline
Alors c'est marrant parce que justement, j'allais commencer un post épique sur le sujet et je me demandais dans quelle catégorie le mettre.
Spoiler: Oui, ça marche.
Spoiler 2: je vous fais un copier/coller de la procédure que je viens d'écrire pour mon équipe; y'a peut-être des bourdes (notamment dues à l'anonymisation des noms de domaines et serveurs), mais dans l'ensemble ça devrait passer.
Spoiler 3: la config est probablement juuuuuuste un peu overkill pour la plupart des situations. Mais c'est plus facile de l'adapter à une situation plus simple (serveur unique, pas de proxy, pas d'alias...) que l'inverse.
[EDIT] J'ai oublié la partie config GLPI, la suite au prochain épisode... [/EDIT]
Extrait:
Le SSO est défini ici comme l'authentification automatique sur un site en fonction de la session Windows en cours.
Cette procédure décrit l’implémentation d’un SSO à plusieurs serveurs et plusieurs domaines, avec proxy HAProxy et backends Apache sous Linux Ubuntu (un backend par domaine).
L'implémentation du SSO implique principalement la configuration et la gestion des tickets Kerberos sur le serveur Web, puis la configuration des navigateurs.
2.1. Configuration de base Kerberos
Installation de base de Kerberos (package krb5-user) puis éditer /etc/krb5.conf.
[libdefaults]
default_realm = DOMAIN1.LAN
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
default_tkt_enctypes = arcfour-hmac-md5 des-cbc-crc des-cbc-md5
default_tgs_enctypes = arcfour-hmac-md5 des-cbc-crc des-cbc-md5
[realms]
DOMAIN1.LAN = {
kdc = domain1.lan
admin_server = domain1.lan
}
DOMAIN2.LAN = {
kdc = domain2.lan
admin_server = domain2.lan
}
[domain_realm]
.domain1.lan = DOMAIN1.LAN
domain1.lan = DOMAIN1.LAN
.domain2.lan = DOMAIN2.LAN
domain2.lan = DOMAIN2.LAN
(à adapter selon les domaines)
2.2. Création d’utilisateurs Kerberos spécifiques
Cet utilisateur sera le container pour les SPN des serveurs de cette application Web. Un utilisateur par domaine et par serveur devraient être créés(ex : krb_srv1, krb_srv2) ; les identifiants devraient si possible être identique sur chaque domaine.
Une fois les utilisateurs créés, assigner les SPN, en n’oubliant pas les éventuels alias DNS :
setspn -S HTTP/srv1.fqdn krb_srv1
setspn -S HTTP/appalias.fqdn krb_srv1
setspn -S HTTP/srv2.fqdn krb_srv2
2.3. Création des keytabs
Une fois tous les utilisateurs créés, on exporte leurs keytab pour les intégrer à Apache. Comme il y aura plusieurs keytabs, on les concatène d’office à l’export:
ktpass -princ HTTP/appalias.fqdn@DOMAIN1.LAN -mapuser krb_srv1@domain1.lan -pass PASSWD -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -out kerberos-app-domain1.keytab
ktpass -princ HTTP/srv2.fqdn@DOMAIN1.LAN -mapuser krb_srv2@domain1.lan -pass PASSWD -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -in kerberos-app-domain1.keytab -out kerberos-app-domain1.keytab
La même procédure est répétée sur chaque domaine.
On récupère ensuite ces fichiers sur le premier serveur Web :
kerberos-app-domain1.keytab
kerberos-app-domain2.keytab
Puis on les concatène avec ktutil dans un fichier keytab unique :
user@srv1 ~$ ktutil
> rkt kerberos-app-domain1.keytab
> rkt kerberos-app-domain2.keytab
> wkt kerberos-app.keytab
> q
C’est ce fichier final qui sera référencé dans Apache et qui servira de clé d’accès aux domaines.
2.4. Apache
Apache doit être installé avec le module mod_auth_kerb. Dans le cas d’un serveur backend, il doit également être configuré pour reconnaître son frontend.
Un soin particulier devra être donné à déterminer quelles ressources seront soumises à l’authentification Kerberos, et lesquelles ne le seront pas.
Voici la configuration finale d’un backend GLPI :
<VirtualHost *:80>
ServerName srv-glpi-web02.domain2.lan
ServerAlias appalias.fqdn
DocumentRoot /var/www/html/glpi
RemoteIPInternalProxy x.x.x.x
HttpProtocolOptions Unsafe
RemoteIPHeader X-Forwarded-For
<Location "/plugins/">
AuthType None
Require all granted
</Location>
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/var/www/html/glpi">
Options None
AllowOverride All
AuthType Kerberos
AuthName "Authentification GLPI par Kerberos (Web02)"
KrbAuthRealms DOMAIN1.LAN DOMAIN2.LAN
KrbServiceName Any
Krb5Keytab /etc/apache2/kerberos-app.keytab
KrbMethodNegotiate On
KrbMethodK5Passwd On
require valid-user
LogLevel warn
</Directory>
<Files ~ "\.(png|css|js)$">
Require all granted
</Files>
ErrorLog ${APACHE_LOG_DIR}/glpi_error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/glpi_access.log combined
</VirtualHost>
L’arborescence GLPI est sujette à l’authentification, mais des exceptions sont posées pour les ressources statiques (images, fichiers CSS et Javascript) ainsi que pour les points d’entrée des plugins (inventaire FusionInventory par exemple).
La config HAProxy (haproxy.conf):
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# Default ciphers to use on SSL-enabled listening sockets.
# For more information, see ciphers(1SSL). This list is from:
# https://hynek.me/articles/hardening-you … l-ciphers/
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
ssl-default-bind-options no-sslv3
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
option forwardfor
frontend http-in
bind appalias.fqdn:80
default_backend glpi_servers
option forwardfor
backend glpi_servers
balance source
hash-type consistent
# stick-table type ip size 1m expire 24h
# stick on src
# cookie SERVERID insert indirect nocache
server web01 srv-glpi-web01.domain1.lan:80 check # cookie web01
server web02 srv-glpi-web02.domain2.lan:80 check # cookie web02
2.5. Configuration des navigateurs
Apache authentifie en fonction du ticket Kerberos transmis par le navigateur. Par sécurité, ces derniers ne les communiquent pas automatiquement, et doivent donc être configurés spécifiquement.
Firefox
Pour les versions antérieures à v60, la configuration se fait dans about:config, manuellement ou par autoconfig. Renseigner les clés network.negotiate-auth.delegation-uris et network.negotiate-auth.trusted-uris avec la liste des domaines et/ou sites concernés :
network.negotiate-auth.delegation-uris : .domain1.lan, .domain2.lan, appalias.fqdn
network.negotiate-auth.trusted-uris : .domain1.lan, .domain2.lan, appalias.fqdn
A partir de la v60 ESR, Firefox intègre des GPO contrôlant ces clés.
Chrome
Chrome intègre des GPO :
• Google Chrome/Règles pour l'authentification HTTP:
◦ Désactiver la consultation CNAME lors de la négociation de l'authentification Kerberos (Activer)
◦ Liste blanche des serveurs d'authentification (*.domain1.lan, *.domain2.lan, appalias.fqdn)
◦ Liste blanche des serveurs de délégation Kerberos (*.domain1.lan, *.domain2.lan, appalias.fqdn)
Internet Explorer
Internet Explorer 11 mérite de brûler dans les flammes de chaque cercle de l'enfer indépendamment. De ce fait, je n'ai pas à ce jour de configuration fonctionnelle.
Last edited by nbriche (2018-05-24 17:49:52)
Offline
Such configuration allows for a Windows user runing Internet Explorer to access GLPI without the need to enter his/her username and password. Instead, the user's Windows login username/password will be automatically used to validate access to GLPI. Liteblue Login
Last edited by Lucy357 (2018-07-27 09:12:43)
Offline
IE but also Chrome and Firefox; any browser that can transmit the user's authentication data. The Big Three can be told to do so by GPO under Windows or by configuration file under Linux (in the case of Firefox and Chrome); I don't know about others.
Last edited by nbriche (2018-07-27 19:58:39)
Offline
This procedure describes the implementation of SSO to multiple servers and multiple domains, with HAProxy proxy and Apache backends running Linux Ubuntu (one backend per domain). liteblue
No, actually, this is a scam attempt. Please remove yourself from human society at your earliest convenience.
Offline
How I can implement the SSO in this environment, on the internet I find several tutorials but the Prob is that all use later version very old for Version 9.xx I did not fall on Nothing.
Offline
Bonjour et merci pour le tuto !
Tout semble fonctionner mais GLPI me demande mon identifiant mot de passe (alors que les log apache montre qu'il detect mon user)
Je pense que le soucis vient de la conf GLPI des idées ?
Merci d'avance
Bon j'ai trouvé dans ce post 160674 :
Dans GLPI
- Un de tes AD renseigné (Configuration > Authentification > Annuaires LDAP)
- Champs de stockage de l'identifiant dans la requête HTTP : REMOTE_USER (Configuration > Authentification > Autres )
- Supprimer le domaine des identifiants de la forme identifiant@domaine : Oui
- sync de tes utilisateurs AD (Administration > Utilisateurs > Annuaires LDAP > Importation de nouveaux utilisateurs )
Last edited by nlussier (2020-01-30 17:14:47)
Offline