O método de autenticação ident funciona obtendo
o nome de usuário do sistema operacional a partir do servidor
ident do hospedeiro do cliente, e usa-o como
o nome de usuário do banco de dados
(com mapeamento de nome de usuário opcional).
Este método somente tem suporte em conexões TCP/IP.
Quando é especificado ident para conexão
local (não-TCP/IP), será usada a autenticação
peer (veja Autenticação entre pares).
As seguintes opções de configuração têm suporte no
ident:
mapPermite o mapeamento entre os nomes de usuário do sistema e do banco de dados. Veja Mapas de nome de usuário para obter detalhes.
O “Protocolo de Identificação” está descrito no
RFC 1413
[138].
Praticamente todos os sistemas operacionais do tipo
Unix vêm com um servidor de
identidade que escuta na porta TCP 113 por padrão.
A funcionalidade básica de um servidor de identidade é responder
a perguntas como “Qual usuário iniciou a conexão que sai da
sua porta X e se conecta à minha porta
Y?”.
Uma vez que o PostgreSQL conhece
X e Y quando
a conexão física é estabelecida, ele pode interrogar o servidor de
identidade no hospedeiro do cliente que está se conectando,
e teoricamente pode determinar o usuário do sistema operacional
para qualquer conexão.
A desvantagem desse procedimento é que depende da integridade do cliente: se a máquina cliente não for confiável, ou estiver comprometida, um invasor poderá executar praticamente qualquer programa na porta 113, e retornar qualquer nome de usuário que escolher. Este método de autenticação é, portanto, apropriado apenas para redes fechadas, onde cada máquina cliente está sob controle rígido, e onde o banco de dados e os administradores do sistema operam em contato próximo. Em outras palavras, deve-se confiar na máquina que executa o servidor de identidade. Preste atenção ao aviso:
O Protocolo de Identificação não pretende ser um protocolo de autorização ou controle de acesso.
—RFC 1413
Alguns servidores de identidade têm uma opção fora do padrão que
faz com que o nome de usuário retornado seja encriptado, usando
uma chave que somente o administrador da máquina de origem conhece.
Esta opção não deve ser usada ao usar o
servidor ident com o
PostgreSQL, porque o
PostgreSQL não tem como desencriptar a
cadeia de caracteres retornada para determinar o nome real do usuário.
[138] RFC 1413: O “Protocolo de Identificação” (também conhecido como “ident”, e também conhecido como “Protocolo de Identidade”) fornece um meio para determinar a identidade de um usuário de uma conexão TCP específica. Dado um par de números de porta TCP, ele retorna uma cadeia de caracteres que identifica o dono dessa conexão no sistema do servidor. (N. T.)