PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 22/03/2019 14:37:15

laurence
Membre

Problème d'authentification gssapi avec compte en majuscule

Bonjour,

J'ai un serveur PostgreSQL 9.4 sur Redhat 6.
J'ai paramétré l'authentification gssapi sur ce serveur afin de bénéficier de l'authentification intégrée via qgis.
Tout foncitonne parfaitement lorsque l'utlisateur ouvre sa session avec son copte en minuscule.
Lorsqu'il ouvre sa session avec son compte en majuscule, j'obtiens le message d'erreur suivant :
2019-03-22 13:33:01.583 CET [inconnu] [inconnu] [inconnu] : LOG:  connexion reçue : hôte=<monposte> port=60110
2019-03-22 13:33:01.607 CET [inconnu] siglc MATRICULE_UTILISATEUR: LOG:  connexion autorisée : utilisateur=MATRICULE_UTILISATEUR, base de données=bdd
2019-03-22 13:33:01.607 CET [inconnu] siglc MATRICULE_UTILISATEUR: FATAL:  le rôle « MATRICULE_UTILISATEUR » n'existe pas

Voici la configuration mise en place :


postgresql.conf :
# GSSAPI using Kerberos
krb_server_keyfile = '/home/monfic.keytab'
krb_caseins_users = on

pg_hba.conf :
host    all             all           0.0.0.0/0               gss include_realm=1 krb_realm=MONDOMAINE.FR map=gssmap


pg_ident.conf :
gssmap     /^(.*)@MONDOMAINE\.FR$                  \1



Merci d'avance pour votre aide.

Hors ligne

#2 26/03/2019 17:23:36

lemjid
Membre

Re : Problème d'authentification gssapi avec compte en majuscule

Bonjour,

En dehors de l'authentification gssapi, dans PostgreSQL, les noms d'identifiants sont toujours converti en minuscules, sauf si vous entourez le nom de l'identifiant avec des guillemets doubles. exemple "MATRICULE_UTILISATEUR".
C'est la même chose pour les relations de la base.

https://www.postgresql.org/docs/current … xical.html
https://docs.postgresql.fr/9.6/sql-synt … ence-table

Hors ligne

#3 26/03/2019 18:33:44

laurence
Membre

Re : Problème d'authentification gssapi avec compte en majuscule

Bonjour,

Merci pour la réponse. Je créé mes utilisateurs en minuscule, avec des doubles quotes, car certains commencent par des chiffres. Exemple d'ordre SQL utilisé : create user "0toto";
Les authentifications MD5 en minuscule fonctionnent donc bien. Les authentifications MD5 en majuscule ne fonctionnent pas.
J'ai fait le test en créant un utilisateur PostgreSQL en majuscule. L'authentification GSSAPI en majuscule fonctionne avec cet utilisateur. Je ne peux pas doubler tous les utlisateurs postgreSQL en minuscule et en majuscule pour que l'authentification gssapi fonctionne qu'on soit loggué en minuscule ou en majuscule !
N'y aurait t'il pas plutôt une syntaxe dans le fichier pg_ident.conf, qui me permettrait de convertir le nom de l'utilisateur OS en minuscule côté postgreSQL ?
Par exemple :
gssmap     /^(.*)@MONDOMAINE\.FR$                  lower(\1)

Dernière modification par laurence (26/03/2019 18:34:35)

Hors ligne

#4 27/03/2019 08:49:11

gleu
Administrateur

Re : Problème d'authentification gssapi avec compte en majuscule

À ma connaissance, ce type de syntaxe ne fonctionnera pas dans le fichier pg_ident.conf. En tout cas, le problème ici n'est pas l'authentification GSSAPI mais le fait que PostgreSQL fait attention à la casse. Si vous voulez toujours que l'utilisation puisse s'identifier en majuscule comme en minuscule, il faut ajouter une ligne (par utilisateur) dans pg_ident.conf pour que le nom de rôle majuscule soit converti en minuscule.

gssmap     /^0toto@MONDOMAINE\.FR$                 0toto
gssmap     /^0TOTO@MONDOMAINE\.FR$                  0toto

Sinon, les utilisateurs devront saisir leur login en minuscule.


Guillaume.

Hors ligne

#5 27/03/2019 09:32:22

laurence
Membre

Re : Problème d'authentification gssapi avec compte en majuscule

Merci. C'est ce que je vais faire.

Hors ligne

#6 29/03/2019 19:08:29

laurence
Membre

Re : Problème d'authentification gssapi avec compte en majuscule

Bonjour,

@gleu, J'ai voulu faire un essai ajoutant laligne suivante dans le pg_ident.conf :
gssmap     0TOTO@MONDOMAINE.FR                  0toto

J'obtiens le message d'erreur suivant : FATAL:  le rôle « 0TOTO» n'existe pas.

Même erreur avec la syntaxe :
gssmap     /^0TOTO@MONDOMAINE\.FR$                  0toto

J'ai beau retourner le problème dans tous les sens, je n'arrive pas à le faire marcher. C'est comme s'il ne prenait pas en compte la colonne 0toto dans le pg_ident.conf.

Est-ce que quelqu'un a une idée ?

Merci par avance.

Hors ligne

#7 31/03/2019 18:55:54

gleu
Administrateur

Re : Problème d'authentification gssapi avec compte en majuscule

Vous avez cette erreur en utilisant quel nom pour la connexion ? 0TOTO ou 0TOTO@MONDOMAINE.FR ?


Guillaume.

Hors ligne

#8 01/04/2019 10:48:34

laurence
Membre

Re : Problème d'authentification gssapi avec compte en majuscule

Comment le vérifier ? Je n'ai rien dans la log postgreSQL.

Hors ligne

#9 01/04/2019 18:14:11

gleu
Administrateur

Re : Problème d'authentification gssapi avec compte en majuscule

Vous devez avoir un message comme quoi soit l'identification (style role does not exist) soit l'authentication n'a pas fonctionné (style wrong password). Si vous n'avez absolument aucun message dans les logs PostgreSQL, c'est que vous ne regardez pas les bons logs (ou que PostgreSQL a une configuration des traces que je n'ai jamais rencontré en clientèle).


Guillaume.

Hors ligne

#10 02/04/2019 09:52:50

laurence
Membre

Re : Problème d'authentification gssapi avec compte en majuscule

Le message dans la log POstgreSQL est :
2019-04-02 09:47:11.431 CEST [inconnu] [inconnu] [inconnu] : LOG:  connexion reçue : hôte=<monpc> port=54331
2019-04-02 09:47:11.463 CEST [inconnu] siglc 0TOTO : LOG:  connexion autorisée : utilisateur=0TOTO, base de données=siglc
2019-04-02 09:47:11.463 CEST [inconnu] siglc 0TOTO : FATAL:  le rôle « 0TOTO» n'existe pas (i.e en majuscule)

En base il y a un utilisateur 0toto (en minuscule). l'authentification intégrée gssapi fonctionne bien quand je me connecte avec l'utilisateur 0toto au niveau de ma session Windows.
Dès que je me connecte en majuscule côté Windows, j'ai le message ci-dessus. J'ai vraiment l'impression qu'il ne prend pas le nom de l'utilisateur postgreSQL dans le pg_ident.conf.

Contenu du pg_ident.conf :
mamap   0TOTO@MONDOMAIN.FR      0toto
mamap   0toto@MONDOMAINE.FR      0toto

Pour faire mon test, j'utilise le logiciel qgis sur mon pc.

Merci pour votre réponse.

Dernière modification par laurence (02/04/2019 09:53:50)

Hors ligne

#11 02/04/2019 15:27:47

rjuju
Administrateur

Re : Problème d'authentification gssapi avec compte en majuscule

Oui, le fichier ident précise que 0TOTO@MONDOMAINE.FR et 0toto@mondomaine.fr sont autorisés à se connecter en tant que rôle postgres 0toto, mais le logiciel doit demander l'identité 0toto.

Comment configurez vous qgis?  Y a-t-il une option du genre "utiliser mon identifiant de session" ?  Si oui, la seule alternative serait que qgis puisse appliquer une transformation en minuscule.

Hors ligne

#12 02/04/2019 17:38:44

laurence
Membre

Re : Problème d'authentification gssapi avec compte en majuscule

Justement dans qgis on indique le nom du serveur, de la base de données, du port. Mais on n'indique ni utilisateur, ni mot de passe. C'est le principe de l'authentification intégrée. Ces informations sont reprises de la session Windows. Si on s'est loggué en majuscule, le compte sera en majuscule, si on s'est loggué en minuscule, le compte est en minuscule. Donc pas moyen de transformer le nom du compte en minuscule.

Du coup je m'interroge de l’intérêt du paramètre postgreSQL :krb_caseins_users = on
Pour moi ce paramètre, lorsqu'il est à "on", permet de ne pas tenir compte de la casse de l'utilisateur qui se connecte. Du coup , lorsque l'on utilise l'authentification gsspapi (avec kerberos), j'authorise les comptes en majuscule et en minuscule à venir s'authentifier sur mon instance. Mais à quoi cela sert'il si côté postgreSQL les comptes sont case sensitive ?

Pour ma part, je n'ai jamais réussi à faire fonctionner l'authentification gssapi si ce paramètre est à "off". Même avec un compte en minuscule.

Hors ligne

#13 02/04/2019 19:16:16

rjuju
Administrateur

Re : Problème d'authentification gssapi avec compte en majuscule

Le paramètre krb_caseins_users permet d'ignorer la casse sur la partie pg_ident uniquement, le reste de l'authentification reste standard. Le role 0toto est différent du rôle 0TOTO, ce sont les règles du standard SQL.  Malheureusement, à part se logger en minuscule, il n'y a pas vraiment d'alternative.

Hors ligne

#14 03/04/2019 08:31:22

laurence
Membre

Re : Problème d'authentification gssapi avec compte en majuscule

Merci pour la réponse, mais du coup je n'y comprends plus rien. 
A quoi sert le champ pg-username dans le pg_ident.conf.
Dans ce fichier J'ai bien indiqué que lorsque le compte (kerberos) 0TOTO@MONDOMAINE.FR (en majuscule) se connecte, on le connecte avec le compte postgreSQL 0toto (en minuscule).
Le champ pg-username ne sert donc t-il à rien ?

Hors ligne

#15 03/04/2019 16:17:58

gleu
Administrateur

Re : Problème d'authentification gssapi avec compte en majuscule

Je ne crois pas que ce soit le problème. PostgreSQL se plaint d'un utilisateur 0TOTO, pas 0TOTO@DOMAINE.FR. Donc la configuration du pg_ident.conf est erronée. Vous devriez avoir une ligne indiquant 0TOTO à transfomer en 0toto.


Guillaume.

Hors ligne

#16 03/04/2019 18:44:55

rjuju
Administrateur

Re : Problème d'authentification gssapi avec compte en majuscule

Je vais essayer d'être un peu plus clair dans mon explication.

Concrètement, la connexion se fait en fonction de plusieurs éléments :


- le nom du rôle postgres avec lequel on souhaite se connecter
- la base de donnée cible
- l'adresse IP d'origine


À partir de ces éléments, postgres détermine une méthode d'authentification, qui dans votre cas est GSSAPI.


Le problème ici est que le nom d'utilisateur est "deviné automagiquement" par qgis en fonction de la session windows.  Donc, si vous vous connectez en 0TOTO@MONDOMAINE.FR, il utilisera 0TOTO pour le nom du rôle postgres.  Ensuite, étant donné que vous avez ouvert une session windows sur un domaine, vous disposez d'un "ticket" active directory, disant que le domaine vous a authentifié et que vous êtes bien 0TOTO@MONDOMAINE.FR.  C'est ce ticket qui est fourni à postgres pour l'authentification, que postgres fournit à son tour à active directory pour valider que le ticket est bien valide.



Le fichier pg_ident.conf permet uniquement de dire si un utilisateur du domaine, que ce soit 0TOTO@MONDOMAINE.FR ou 0toto@MONDOMAINE.FR est autorisé à se connecter à postgres, si son ticket est valide, en tant qu'utilisateur 0toto ou 0TOTO en fonction des entrées que vous avez ajoutés.  Mais le nom du rôle à vérifier n'est pas le nom défini dans le fichier pg_ident.conf (surtoutqu'il peut y en avoir plusieurs) mais celui demandé lors de la connexion.



Concrètement, le problème ici est l'utilisation automagique d'un nom d'utilisateur par qgis, couplé au fait qu'active directory ignore la casse, ce qui n'est pas le cas des identifiant d'après la norme SQL.

Hors ligne

#17 04/04/2019 17:16:15

laurence
Membre

Re : Problème d'authentification gssapi avec compte en majuscule

Bonjour Guillaume et Julien,

Je pense que nous nous comprenons assez bien sur le problème, et le fonctionnement de gssapi.
Du coup, j'ai modifié mon fichier pg_ident.conf en enlevant toutes les ligne pour la map concernée et en ajoutant la ligne suivante :
mamap   0TOTO      0toto

J'obtiens le message d'erreur suivant lorsque j'ouvre ma session en majuscule :
2019-04-04 16:54:29.450 CEST [inconnu] [inconnu] [inconnu] : LOG:  connexion reçue : hôte=<mon_pc> port=62670
2019-04-04 16:54:29.488 CEST [inconnu] siglc 0TOTO : LOG:  pas de correspondance dans la usermap « mamap » pour l'utilisateur « 0TOTO »
        authentifié en tant que « 0TOTO@MONDOMAINE.FR »
2019-04-04 16:54:29.488 CEST [inconnu] siglc 0TOTO : FATAL:  authentification GSSAPI échouée pour l'utilisateur « 0TOTO »
2019-04-04 16:54:29.488 CEST [inconnu] siglc 0TOTO : DÉTAIL:  La connexion correspond à la ligne 92 du pg_hba.conf : « host    all             all           192.168.1.1/32         gss include_realm=1 krb_realm=MONDOMAINE.FR map=mamap »

même genre de message avec une connexion en minuscule.

J'en déduis qu'il faut bien mettre le nom de domaine dans le champs SYSTEM-USERNAME. par exemple :
mamap   0TOTO@MONDOMAINE.FR      0toto

Par contre il ne tient absolument pas compte du champ PG-USERNAME. Ce qui rejoint ce que dit Julien dans sa phrase : "Mais le nom du rôle à vérifier n'est pas le nom défini dans le fichier pg_ident.conf (surtoutqu'il peut y en avoir plusieurs) mais celui demandé lors de la connexion".

Il n'y a donc pas de solution (postgresql) à mon problème.

Etes-vous d'accord avec mon analyse ?

Merci par avance.
Laurence.

Hors ligne

#18 04/04/2019 21:39:04

rjuju
Administrateur

Re : Problème d'authentification gssapi avec compte en majuscule

Tout à fait.  La seule solution si vous devez (ou voulez pouvoir) ouvrir votre sessions avec un utilisateur en majuscule serait de pouvoir configurer qgis pour changer le nom d'utilisateur (ou forcer un nom en minuscule).

Hors ligne

Pied de page des forums