El método de autenticación ident funciona obteniendo el nombre de usuario del sistema operativo del cliente a partir de un servidor ident y utilizándolo como el nombre de usuario de la base de datos permitido (con una asignación de nombre de usuario opcional). Esto solo es compatible con conexiones TCP/IP.
Cuando se especifica ident para una conexión local (que no sea TCP/IP), se utilizará en su lugar la autenticación peer (consulta la sección Section 20.9).
Se admiten las siguientes opciones de configuración para ident:
mapPermite la asignación entre nombres de usuario del sistema y de la base de datos. Consulta la sección Section 20.2 para más detalles.
El “Protocolo de identificación” se describe en
RFC 1413. Prácticamente todos los
sistemas operativos de tipo Unix incorporan por defecto un servidor ident que escucha en el puerto TCP 113.
La funcionalidad básica de un servidor ident consiste en responder a preguntas como “¿Qué usuario
inició la conexión que sale de tu puerto X y se conecta a mi puerto
Y?”. Dado que PostgreSQL conoce tanto
X como Y cuando se establece una conexión física, puede
interrogar al servidor ident en el host del cliente que se conecta y, teóricamente, determinar el usuario
del sistema operativo para cualquier conexión dada.
El inconveniente de este procedimiento es que depende de la integridad del cliente: si la máquina cliente no es de confianza o está comprometida, un atacante podría ejecutar prácticamente cualquier programa en el puerto 113 y devolver el nombre de usuario que desee. Por lo tanto, este método de autenticación solo es adecuado para redes cerradas en las que cada máquina cliente está bajo un estricto control y en las que los administradores de la base de datos y del sistema operan en estrecho contacto. En otras palabras, debes confiar en la máquina que ejecuta el servidor ident. Presta atención a la advertencia:
El Protocolo de identificación no está pensado como protocolo de autorización o control de acceso. | ||
| --RFC 1413 | ||
Algunos servidores ident tienen una opción no estándar que hace que el nombre de usuario devuelto esté cifrado, utilizando una clave que solo conoce el administrador de la máquina de origen. Esta opción no debe utilizarse cuando se emplee el servidor ident con PostgreSQL, ya que PostgreSQL no dispone de ningún modo para descifrar la cadena devuelta para determinar el nombre de usuario real.