La méthode d'authentification ident fonctionne en obtenant le nom de l'opérateur du système depuis le serveur ident distant et en l'appliquant comme nom de l'utilisateur de la base de données (et après une éventuelle mise en correspondance). Cette méthode n'est supportée que pour les connexions TCP/IP.
Lorsqu'ident est spécifié pour une connexion locale (c'est-à-dire non TCP/IP), l'authentification peer (voir Section 20.9) lui est automatiquement substituée.
Les options de configuration suivantes sont supportées pour
ident
:
map
Permet la mise en correspondance entre les noms système et base de données. Voir Section 20.2 pour plus de détails.
Le « protocole d'identification » est décrit dans la
RFC 1413.
Théoriquement, chaque système
d'exploitation de type Unix contient un serveur ident
qui écoute par défaut sur le port TCP 113. La fonctionnalité basique
d'un serveur ident est de répondre aux questions telles que :
« Quel utilisateur a initié la connexion qui sort du port
X
et se connecte à mon port
Y
? ».
Puisque PostgreSQL connaît
X
et Y
dès lors
qu'une connexion physique est établie, il peut interroger le serveur
ident de l'hôte du client qui se connecte et peut ainsi théoriquement
déterminer l'utilisateur du système d'exploitation pour n'importe quelle
connexion.
Le revers de cette procédure est qu'elle dépend de l'intégrité du client : si la machine cliente est douteuse ou compromise, un attaquant peut lancer n'importe quel programme sur le port 113 et retourner un nom d'utilisateur de son choix. Cette méthode d'authentification n'est, par conséquent, appropriée que dans le cas de réseaux fermés dans lesquels chaque machine cliente est soumise à un contrôle strict et dans lesquels les administrateurs système et de bases de données opèrent en étroite collaboration. En d'autres mots, il faut pouvoir faire confiance à la machine hébergeant le serveur d'identification. Cet avertissement doit être gardé à l'esprit :
Le protocole d'identification n'a pas vocation à être un protocole d'autorisation ou de contrôle d'accès. | ||
--RFC 1413 |
Certains serveurs ident ont une option non standard qui chiffre le nom de l'utilisateur retourné à l'aide d'une clé connue du seul administrateur de la machine dont émane la connexion. Cette option ne doit pas être employée lorsque le serveur ident est utilisé avec PostgreSQL car PostgreSQL n'a aucun moyen de déchiffrer la chaîne renvoyée pour déterminer le nom réel de l'utilisateur.