You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2013-02-18 12:26:39

edzilla
Member
Registered: 2010-10-29
Posts: 62

Single sign on avec Kerberos

J'ai pas mal galéré pour mettre en place du SSO pour glpi, j'ai testé à peu près toutes les méthodes disponibles (sur le forum, sur le wiki, sur internet...)
Soit le tutorial ne marchait pas (ou en tout cas je n'arrivais pas à le faire fonctionner), soit il ouvrait d'énormes failles de sécurité (je pense à ce post dans le forum par exemple: http://www.glpi-project.org/forum/viewt … p?id=27203 )
Je suis finalement arrivé à Kerberos, qui est trivialement simple à mettre en place et à priori parfaitement sécurisé.

La méthode part du principe que glpi est installé sur un serveur Debian 6, et doit parler avec un  active directory, mais de minimes adaptations doivent suffire pour s'en servir sur du n'importe quel linux.
Je citerais volontiers les différents blogs dont je me suis inspiré, mais comme j'ai mis ça en place y'a 6 mois, je n'ai plus les détails sous la main.

Je recopie notre wiki interne qui est en anglais:



How it works

Single Sign On in GLPI works that way: The browser sends its session informations to Apache, which Apache authenticates against the Active Directory using Kerberos.
When the logon is successfull, Apache sets the $_SERVER['REMOTE_USER'] variable to the username it received from the browser.
GLPI uses this variable as the logged-on username.
Voila, Single Sign On!
1/ Initial Set-up

What follows must only be done once. We'll talk about what needs to be done to add a new client afterwards.
a)  Required packages

We'll assume you are setting it up on a debian machine.
This is the command needed to install the required packages, as of Debian squeeze:

aptitude install heimdal-clients heimdal-kdc libhdb9-heimdal libkadm5clnt7-heimdal libkadm5srv8-heimdal libkdc2-heimdal libsl0-heimdal

b) /etc/krb5.conf

This file needs to be edited to tell Kerberos how to authenticate against the multiples Domain Controllers.
This is an example configuration that allows authentication against DOM1 and DOM2 domains:

[libdefaults]
default_realm = DOM1.GRP

[domain_realm]
    .DOM1.grp = DOM1.GRP
    .DOM2.grp = DOM2.GRP
[realms]
     DOM1.GRP = {
                      admin_server = DOM1DC.DOM1.grp
                      kdc          = DOM1DC.DOM1.grp
                    }
     DOM2.GRP = {
                      admin_server = DOM2DC.DOM2.grp
                      kdc          = DOM2DC.DOM2.grp
                    #
                    # If using Windows2003 write
                    #
                    #    kdc = tcp/DOM2DC.DOM2.grp
                    #
                    # instead.
                    }

When this part is done, you should be able to test the authentication against any of the AD using this:

kinit user@DOM1.GRP
klist

Credentials cache: FILE:/tmp/krb5cc_0
        Principal: user@DOM1.GRP

  Issued           Expires          Principal
Sep 18 14:58:21  Sep 19 00:57:46  krbtgt/DOM1.GRP@DOM1.GRP

Note: The use of lowercase/capital letters is VERY important when using Kerberos. Please follow the examples thoroughly!
c) Apache

First, let's create a directory where all the keytab files will be stored:

mkdir /etc/apache2/keytab

Now, we'll configure the apache website definition to use kerberos authentication:
Edit the file

/etc/apache2/sites-enabled/glpi

And add this to the virtualhost definition:

Alias /topsecret/ "/var/www/glpi"
<Directory "/var/www/glpi">
    AuthType  Kerberos
    KrbAuthRealms DOM1.GRP
    KrbServiceName HTTP
    Krb5Keytab /etc/apache2/keytab/glpi.krb5keytab
    KrbMethodNegotiate on
    KrbMethodK5Passwd off
    require valid-user
</Directory>

2/ Set-up for new clients

On the AD domain controller, create a new user. We'll call it "SvcGlpiSso" and use "long!$longp2ass3word" as a password in this example.
You can create such a user with this small script:

import-module ActiveDirectory
$password = "long!$longp2ass3word"
$type= "svc"
$nom = "GlpiSSO"
$FullName = $type+" "+$nom
$OU = "OU=Services,OU=Accounts,OU=LGC,DC=$Env:lgctrigram,DC=grp"
NEW-ADUser -name "SvcGlpiSso" -path $OU -samaccountname "SvcGlpiSso" -AccountPassword (ConvertTo-SecureString -AsPlainText "$password" -Force) -Givenname $type -surname $nom -displayname $FullName -Enabled $true -PasswordNeverExpires $true 

Open a CMD window, and type this command (obviously you'll need to correct it to make it correspond to the new domain...)

ktpass -princ HTTP/GLPIHOSTNAME@DOM2.GRP -mapuser SvcGlpiSso@DOM2.GRP -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -pass long!$longp2ass3word -out c:\temp\DOM2.krb5keytab

This will give you a kerberos keytab file that you must send to the webserver (GLPIHOSTNAME)
I suggest you use Winscp for this purpose
Once the keytab is on the webserver, you need to copy it to /etc/apache2/keytab/
You then need to add this keytab to the keytab used by Glpi:

ktutil copy DOM2.krb5keytab glpi.krb5keytab

You then must make sure the keytab is readable only by the webserver user:

chown www-data:www-data DOM2.krb5keytab
chmod 400 DOM2.krb5keytab

Offline

#2 2013-02-19 18:32:27

LiTiL_DiViL
Member
Registered: 2008-08-20
Posts: 63

Re: Single sign on avec Kerberos

Merci ..! J'essayerai de l'adapter pour une centos à l'occasion.

Offline

#3 2013-03-27 20:02:58

Lestatdelioncour
Member
Registered: 2012-05-11
Posts: 12

Re: Single sign on avec Kerberos

Bonjour,
j'ai implémenté la solution décrite pa r Edzilla,
tout semble fonctionner, sauf que à la relance de apache2 j'ai le message suivant:
* Starting web server apache2                                                                                                                                                                                 Syntax error on line 44 of /etc/apache2/sites-enabled/000-default:
Invalid command 'KrbAuthRealms', perhaps misspelled or defined by a module not included in the server configuration
Action 'start' failed.
The Apache error log may have more information.

Auriez-vous une idée de ce qui peu provoquer cette situation ?
J'ai implémenté une solution GLPI 0.83.7 motorisée par ubuntu 12.04 LTS
Celle-ci fonctionne en prod avec la solution décrite dans le post http://www.glpi-project.org/forum/viewt…p?id=27203
Qui me pose des problèmes d'affichage sous IE.
Merci

Last edited by Lestatdelioncour (2013-03-27 20:03:59)

Offline

#4 2013-03-28 09:36:03

edzilla
Member
Registered: 2010-10-29
Posts: 62

Re: Single sign on avec Kerberos

As tu activé le module auth_kerb? (a2enmod auth_kerb sous debian)

Offline

#5 2013-06-04 14:24:57

le-dahu
Member
Registered: 2013-06-04
Posts: 5

Re: Single sign on avec Kerberos

Bonjour EDZILLA,

Je rencontre un problème lors de la mise en place de ton tuto.

Lorsque sur le poste client (Windows 7) celui-ci tente de se connecter au serveur, j'ai le message d'erreur suivant : 500 Internal Server Error.

Dans le log d'Apache j'ai le message suivant :

[error] [client 192.168.126.2] gss_acquire_cred() failed : Unspecified GSS failure. Minor code may provide more information (Key table entry not found)

Ce n'est pas le premier tuto sur Apache-Kerberos(AD)-SSO ou le tuto se conclut par cette erreur.

As-tu une idée ?

En te remerciant par avance.

Ps : Mon poste de test est un Windows 7, dans la gestion des polices j'ai donc autorisé l’interprétation du ticket Kerberos en RC4. Mon serveur est un 2008R2.

Last edited by le-dahu (2013-06-04 14:26:10)

Offline

#6 2013-06-04 15:12:40

edzilla
Member
Registered: 2010-10-29
Posts: 62

Re: Single sign on avec Kerberos

J'ai déjà eu cette erreur, de mémoire, c'est quand le keytab ne correspond pas à ce que tu envois.
Dans les trucs à vérifier aussi:
- le servicename dans le fichier de conf apache/la création du user.
- que pour le serveur qui héberge apache, dans son fichier /etc/hosts soit associé le nom de domaine sur lequel se trouve glpi, et l'ip qui est utilisé pour se connecter à ce nom de domaine.
Ca peut paraitre con, mais j'ai eu droit à des erreurs assez mystiques avec ce deuxième point...

Offline

#7 2013-06-04 15:40:43

le-dahu
Member
Registered: 2013-06-04
Posts: 5

Re: Single sign on avec Kerberos

Merci pour ta réponse edzilla,

Dans mon fichier /etc/hosts j'ai bien :

127.0.0.1 localhost
192.168.126.77 glpi.exadirectory.lan glpi

Je comprend pas la notion de service name dans Apache (je suis novice dans Linux smile )

Selon toi est ce que le serveur Linux doit être membre du domaine AD (via une jonction Winbind ?)

Last edited by le-dahu (2013-06-04 15:49:15)

Offline

#8 2013-06-04 15:50:20

edzilla
Member
Registered: 2010-10-29
Posts: 62

Re: Single sign on avec Kerberos

En admettant que tu restes assez proche de mon example:
Ton nom de domaine est DOM.GRP
ton glpi est accessible sur glpi.toto.com

Ton fichier de configuration de site (/etc/apache2/sites-enabled/glpi) doit mentionner
KrbAuthRealms DOM.GRP
KrbServiceName HTTP


Une fois ton utilisateur activedirectory créé, tu dois lui créer un keytab:
ktpass -princ HTTP/glpi.toto.com@DOM.GRP -mapuser SvcGlpiSso@DOM.GRP -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -pass long!$longp2ass3word -out c:\temp\DOM2.krb5keytab

Il est vraiment impératif que tout corresponde bien, en particulier à la création de ton user par rapport aux valeurs dans le fichier de conf apache, et à ce que tu rentres pour te connecter à ton glpi

Offline

#9 2013-06-04 15:51:26

edzilla
Member
Registered: 2010-10-29
Posts: 62

Re: Single sign on avec Kerberos

Selon toi est ce que le serveur Linux doit être membre du domaine AD (via une jonction Winbind ?)

Non, dans ce scénario la ça n'a pas d’intérêt (c'est même tout le côté ultra commode)

Offline

#10 2013-06-04 16:56:44

le-dahu
Member
Registered: 2013-06-04
Posts: 5

Re: Single sign on avec Kerberos

Pour être un peu plus précis, je teste le SSO Kerberos de façon générale et non spécifiquement pour GLPI. Je vais donc un VI de /etc/apache2/sites-enabled/000-default et je rajoute à la fin de ce fichier les informations suivantes :

Alias /topsecret/ "/var/ww w/secret"
<Directory "/var/w ww/secret">
AuthType Kerberos
KrbAuthRealms EXADIRECTORY.LAN
KrbServiceName HTTP
Krb5Keytab /etc/apache2/keytab/glpi.krb5keytab
Krbmethodnegotiate on
KrbmethodeK5Passwd off
require valid-user
</Directory>

Last edited by le-dahu (2013-06-04 16:57:05)

Offline

#11 2013-06-04 16:57:31

le-dahu
Member
Registered: 2013-06-04
Posts: 5

Re: Single sign on avec Kerberos

Au niveau du keytab, j'ai fait la ligne de code suivante :

ktpass -princ HTTP/glpi.exadirectory.lan@EXADIRECTORY.LAN -mapuser SvcGlpiSso@EXADIRECTORY.LAN -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -pass long!$longp2ass3word -out c:\glpi.krb5keytab

J'ai utilisé WinScp pour faire le transfert de la clé vers /etc/apache2/keytab, puis modification des droits pour ww w-data:ww w-data avec les droits 777.

Redémarrage du service Apache2.

Offline

#12 2013-06-04 16:58:40

le-dahu
Member
Registered: 2013-06-04
Posts: 5

Re: Single sign on avec Kerberos

Maintenant j'ai une nouvelle erreur côté client "401 - Autorization Required" car il me prompt pour un login et un mot de passe, et même en saisissant une information correcte visiblement il authentifie pas.

En revanche si directement sur le serveur web je fais un kinit de mon utilisateur, celui-ci me crée correctement le ticket.

Au niveau du log d'Apache l'erreur est désormais : gss_accept_sec_context() failed : An unsupported mechanism was requested (unknown error).

Dans le doute, j'ai créé un nouvel utilisateur dans mon AD, j'ouvre une session et la : Après la purge du cache IE quand l'utilisateur j'ouvre l'URL http://glpi.exadirectory.lan/topsecret il me demande une authentification utilisateur/password. Si je saisie un login et mot de passe de mon compte AD alors la variable remonte correctement, page PHP :

<?
echo $_SERVER['REMOTE_USER'];
?>

Donc l'authentification Kerberos fonctionne mais pas automatiquement.

Ps : Désolé pour le multi-post et les espaces entre les "W", mais le forum à une restriction idiote (même en mettant les informations entre balise code) ...

Offline

#13 2013-08-16 15:27:47

nelson_nunes
Member
From: Lisbon
Registered: 2010-06-08
Posts: 15

Re: Single sign on avec Kerberos

bonjour

J'ai suivi toutes les étapes et le message d'erreur suivant et ne peux pas vous connecter GLPI:

[Thu Aug 22 17:20:11 2013] [debug] src/mod_auth_kerb.c(1939): [client 10.138.2.200] kerb_authenticate_user entered with user (NULL) and auth_type Kerberos
[Thu Aug 22 17:20:11 2013] [debug] src/mod_auth_kerb.c(1939): [client 10.138.2.200] kerb_authenticate_user entered with user (NULL) and auth_type Kerberos
[Thu Aug 22 17:20:11 2013] [debug] src/mod_auth_kerb.c(1278): [client 10.138.2.200] Acquiring creds for HTTP@sedecentos101.cmloures.pt
[Thu Aug 22 17:20:11 2013] [debug] src/mod_auth_kerb.c(1138): [client 10.138.2.200] GSS-API major_status:000d0000, minor_status:000186a8
[Thu Aug 22 17:20:11 2013] [error] [client 10.138.2.200] gss_acquire_cred() failed: Unspecified GSS failure.  Minor code may provide more information (, )
[Thu Aug 22 17:21:17 2013] [debug] src/mod_auth_kerb.c(1939): [client 10.138.2.200] kerb_authenticate_user entered with user (NULL) and auth_type Kerberos
[Thu Aug 22 17:21:17 2013] [debug] src/mod_auth_kerb.c(1278): [client 10.138.2.200] Acquiring creds for HTTP@sedecentos101.cmloures.pt
[Thu Aug 22 17:21:17 2013] [debug] src/mod_auth_kerb.c(1138): [client 10.138.2.200] GSS-API major_status:000d0000, minor_status:000186a8
[Thu Aug 22 17:21:17 2013] [error] [client 10.138.2.200] gss_acquire_cred() failed: Unspecified GSS failure.  Minor code may provide more information (, )

merci

Last edited by nelson_nunes (2013-08-22 18:22:59)

Offline

#14 2013-08-28 14:17:41

nelson_nunes
Member
From: Lisbon
Registered: 2010-06-08
Posts: 15

Re: Single sign on avec Kerberos

ce et ma configuration krb5.conf

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

[libdefaults]
default_realm = CMLOURES.PT
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true

[realms]
# EXAMPLE.COM = {
#  kdc = kerberos.example.com
#  admin_server = kerberos.example.com
# }

LOURES.PT = {
  kdc = sededc03.cmloures.pt
  kdc = sededc04.cmloures.pt
}

[domain_realm]
# .example.com = EXAMPLE.COM
# example.com = EXAMPLE.COM
.loures.pt = LOURES.PT
loures.pt = LOURES.PT


quand je lance la commande " kinit -k -t /etc/keytab/LOURES.keytab HTTP/sedecentos.loures.pt@LOURES.PT" obtenu l'erreur suivante:

kinit: KDC has no support for encryption type while getting initial credentials



comment puis-je corriger cette erreur?
J'ai l'AD en 2008R2

Offline

#15 2013-10-01 16:47:33

Feasson Yohann
Member
Registered: 2011-12-13
Posts: 37

Re: Single sign on avec Kerberos

Bonjour,

Merci pour votre experience partagé.

Cependant je n'arrive pas à la mettre en place.

Dans le fichier /etc/apache2/sites-available/default

J'ai bien rajouté toutes les informations concernant kerberos (il met inutile pour moi de créer un nouveau site car glpi est présent dans le fichier de conf default).

Quand je met KrbServiceName HTTP/glpi.domain.local@domain.LOCAL (trouvé sur des autres forum). Je tombe sur la page d'identification de glpi.

Quand je met KrbServiceName HTTP , j'ai une erreur Internal Server Error sur ma page internet avec comme log dans /var/log/apache2/error.log gss_acquire_cred() failed: Unspecified GSS failure.  Minor code may provide more information (, Key table entry not found)

Avez vous une idée?

Merci a vous

Last edited by Feasson Yohann (2013-10-01 16:47:42)

Offline

#16 2013-10-03 07:27:17

Feasson Yohann
Member
Registered: 2011-12-13
Posts: 37

Re: Single sign on avec Kerberos

Pas d'idées?

Merci à vous.

Offline

#17 2013-11-10 18:57:12

edzilla
Member
Registered: 2010-10-29
Posts: 62

Re: Single sign on avec Kerberos

Feasson Yohann wrote:

Bonjour,

Merci pour votre experience partagé.

Cependant je n'arrive pas à la mettre en place.

Dans le fichier /etc/apache2/sites-available/default

J'ai bien rajouté toutes les informations concernant kerberos (il met inutile pour moi de créer un nouveau site car glpi est présent dans le fichier de conf default).

Quand je met KrbServiceName HTTP/glpi.domain.local@domain.LOCAL (trouvé sur des autres forum). Je tombe sur la page d'identification de glpi.

Quand je met KrbServiceName HTTP , j'ai une erreur Internal Server Error sur ma page internet avec comme log dans /var/log/apache2/error.log gss_acquire_cred() failed: Unspecified GSS failure.  Minor code may provide more information (, Key table entry not found)

Avez vous une idée?

Merci a vous

A priori ce genre d'erreur provient du fait qu'il n'arrive pas à trouver de correspondance entre le contenu du keytab et le domaine qui essaie de s'authentifier.
KrbServiceName HTTP/glpi.domain.local@domain.LOCAL => doit correspondre à votre domaine active directory

Offline

#18 2015-06-17 17:40:45

nerocide
Member
Registered: 2008-07-21
Posts: 12

Re: Single sign on avec Kerberos

Merci edzilla ce petit tuto m'a bien aidé.

Tout marche parfaitement bien.

A noter que la partie keytab peut être faite directement depuis la machine client dans le domaine AD:

net ads keytab create -U admin
net ads -U admin keytab add HTTP

Idem pour joindre la machine au domaine:

net ads join -U admin

Offline

#19 2017-01-19 10:18:50

JenkinsTanneur
Member
Registered: 2017-01-16
Posts: 28

Re: Single sign on avec Kerberos

J'ai un problème sur le tuto, c'est quoi comme, fichier le glpi de /etc/apache2/sites-enabled/glpi ?

Car je suis sur Centos7 et que mon apache c'est Apache/HTTPD et que je ne trouve nul part un répertoire sites-enabled.

Offline

#20 2017-01-19 10:21:06

edzilla
Member
Registered: 2010-10-29
Posts: 62

Re: Single sign on avec Kerberos

JenkinsTanneur wrote:

J'ai un problème sur le tuto, c'est quoi comme, fichier le glpi de /etc/apache2/sites-enabled/glpi ?

Car je suis sur Centos7 et que mon apache c'est Apache/HTTPD et que je ne trouve nul part un répertoire sites-enabled.

Je ne connais pas particulièrement centos, je bosse uniquement sur du debian/ubuntu, mais c'est le fichier où tu configures ton virtualhost

Offline

#21 2017-01-19 10:40:07

JenkinsTanneur
Member
Registered: 2017-01-16
Posts: 28

Re: Single sign on avec Kerberos

Désolé je suis vraiment un débutant sur Linux, tu aurais pas une idée d'où peut être ce fichier de conf ? ou d'avoir une parti de ton fichier conf pour le comparer au mien et plus facilement le trouver ? ou meme une ligne de commande pouvant m'indiquer quelle est le fichier de conf de virtualhost ?

j'ai trouvé ça comme commande : apachectl -S mais j'ai du mal à comprendre ce que ça fait.

Last edited by JenkinsTanneur (2017-01-20 16:49:11)

Offline

#22 2017-01-20 12:28:44

JenkinsTanneur
Member
Registered: 2017-01-16
Posts: 28

Re: Single sign on avec Kerberos

Et comment il est censé être crée le fichier glpi.krb5keytab ? car je ne le trouve pas

Offline

#23 2017-01-23 10:37:20

JenkinsTanneur
Member
Registered: 2017-01-16
Posts: 28

Re: Single sign on avec Kerberos

Ok j'ai enfin trouver le fichier virtualHost (c'est mon fichier GLPI.conf situer dans etc/httpd/conf.d/glpi.conf) mais imposible de mettre la main sur glpi.krb5keytab.

On doit le crée nous meme ?

Offline

#24 2017-01-24 14:55:14

JenkinsTanneur
Member
Registered: 2017-01-16
Posts: 28

Re: Single sign on avec Kerberos

Ok finalement reusis pour mon premier domaine, les utilisateur de DOM1.GROUP peuvent se co de façon automatique a GLPI.

Mais j'ai un deuxieme domaine (DOM2.GROUP), je doit modifier comment les fichiers afin que le deuxième soit prit en compte en meme temps ?

Offline

#25 2017-01-24 16:22:00

JenkinsTanneur
Member
Registered: 2017-01-16
Posts: 28

Re: Single sign on avec Kerberos

Ok j'ai reusis, c'étais tout con en faite.

Offline

Board footer

Powered by FluxBB