Múltiplos métodos de autenticação para o Postgresql

4

Atualmente, uso a autenticação "md5" para acesso a partir da lan:

host all all 192.168.1.0/24 md5

Eu quero adicionar o método de autenticação ldap, então adicionei esta linha antes:

host all all 192.168.1.0/24 ldap "ldap://192.168.1.2/basedn;uid=;,cn=xx,dc=yy,dc=zz,dc=ca"

Isso funciona muito bem com as contas do ldap, mas se eu tentar fazer o login com uma conta que não está presente no servidor LDAP, o login falha (o postgresql não tenta a autenticação do md5).

Existe uma maneira de suportar mais de um método de autenticação com postgresql?

    
por Francis 16.03.2012 / 20:53

2 respostas

5

Não - Since the pg_hba.conf records are examined sequentially for each connection attempt, the order of the records is significant. - Em outras palavras, "Primeira correspondência é o método que vou usar". Você teria que listar explicitamente todas as contas locais ( md5 ) antes de prosseguir para a autenticação LDAP "todos os usuários" para que isso funcionasse (e isso começa a ficar complicado com a manutenção do arquivo pg_hba.conf ).

Como solução alternativa, você pode usar o método de autenticação pam e configurar o serviço "postgres" do PAM para usar qualquer método que você deseje (incluindo métodos alternativos), mas isso limita você a qualquer módulo PAM instalado / configurado no seu sistema.
(Para definições adequadamente amplas de "limites" - por exemplo, você pode usar senhas de uso único para contas do Postgres se usar o PAM como método de autenticação).

    
por 16.03.2012 / 21:38
0

Eu me deparei com esse mesmo problema; Eu queria usar md5 para um usuário do aplicativo e ldap para outros usuários da minha organização. Uma diferença é que estou usando a imagem oficial do Docker Postgres, mas meu método ainda deve funcionar para os usuários regulares do Postgresql.

A imagem do Docker Postgres vem com um usuário postgres por padrão. Você pode adicionar um usuário específico ao seu arquivo pg_hba.conf pré-pendente do nome de usuário com um sinal de mais + .

Meu pg_hba.conf acabou sendo o seguinte:

local all all trust host all all 127.0.0.1/32 trust host all all ::1/128 trust host all +postgres all md5 host all all all ldapurl="ldap://192.168.1.2:389/ou=People,dc=Company,dc=com?uid?one"

A segunda até a última linha suporta o usuário do aplicativo, postgres , e a última linha suporta várias contas de usuário LDAP.

    
por 23.04.2018 / 21:13