Novo no PostgreSQL. Instalado o Postgresql 16 no servidor Windows. Em pg_ident.conf, adicionei
sspi userxyz@domínio userxyz
Em pg_hba.conf, adicionei
host all userxyz 0.0.0.0/0 sspi map=sspi
No PGAdmin, adicionei o nome de usuário userxyz sem senha.
Mas estou recebendo falha na conexão:: 1), falha na porta 5432: fe_sendauth: erro sem senha fornecida.
Apenas tentando autenticar userxyz no PostgreSQL no Windows. o que estou perdendo? Obrigado
As linhas "padrão" (que não são padrões para todo o projeto do PostgreSQL, já que os empacotadores instalam seus próprios valores aqui) não atrapalhariam as coisas se ocorressem depois, e não antes, da linha SSPI.
Se você quiser que a regra se aplique tanto ao ipv4 quanto ao ipv6, você precisará de duas linhas ou usar a palavra mágica "samehost" para cobrir ambos. Mas também é meio estranho usar SSPI apenas para conexões de loopback. Em vez disso, você pode usar a palavra mágica "todos", que se aplica tanto ao ipv4 quanto ao ipv6 vindos de qualquer lugar, se for isso que você deseja.
Você pode usar 'all' para o nome de usuário se quiser que a linha se aplique a todas as contas. Normalmente você criaria uma linha 'local' que usa peer ou algo assim (possivelmente apenas para o usuário 'postgres') e uma linha 'host' que usa SSPI para todos os usuários. Dessa forma, seu administrador ainda poderá ignorar o SSPI conectando-se pelo soquete em vez do TCP.
Se você quiser que alguns usuários usem SSPI e outros SCRAM com base no nome de usuário, será necessário especificar de alguma forma quais usuários estão em qual grupo. Não creio que exista uma maneira de terceirizar essa especificação para grupos de AD. Você pode especificar linhas pg_hba separadas para cada usuário, ou incluindo todos os nomes separados por vírgulas em uma linha, ou usando um @includedfile, ou referenciando um +role dentro do banco de dados. Observe que essa escolha é feita por qual usuário do banco de dados eles pediram para se conectar, e não por qual nome de usuário o SSPI os valida como sendo. Quaisquer usuários não capturados pela condição em uma linha passariam para a próxima linha pg_hba, portanto, você desejaria que a linha de exceções fosse anterior e todo o resto mais tarde.
O "todos" é para pg_hba. Para pg_ident, você gostaria de usar um regexp (exemplo não testado da documentação ):
A menos, é claro, que você queira um controle mais preciso sobre quem (no sistema operacional) pode efetuar login como quem (no banco de dados). E cada uma das funções precisa existir no banco de dados antes que alguém possa efetuar login como essa função.