Olá Flavio,
Obrigado pela resposta.
Vou tentar clarear um pouco, mas acho que você entendeu bem.
A política de segurança no desenvolvimento dos sistemas existentes é utilizar a
mesma credencial (usuário/senha) do usuário na autenticação para a aplicação e
para o banco, onde utiliza-se o método PAM no Postgresql e um servidor LDAP
nestas autenticações. Isto se dá para que a responsabilidade pela segurança nas
transações de banco sejam controladas diretamente pelo servidor de banco, onde
o session_user é a própria conta do usuário.
Neste novo sistema que tratei na mensagem abaixo, a ideia é a mesma, porém ao
invés de adotar usuário e senha, seriam utilizados certificados da cadeia
ICP-Brasil em smart card, similar ao que acontece no sistema e-CAC da Receita
Federal ou em alguns sistemas de bancos privados, por exemplo.
Respondendo à sua pergunta: a ideia é usar a mesma credencial.
Pelo que entendi na documentação do Postgresql, o GSSAPI é mais adequado para
ambiente Windows com uso do AD que já suporta autenticação por smart card; não
utilizo AD e os servidores deste sistema não terão contato com os serviços
internos de autenticação.
Quanto ao método CERT no pg_hba, pelo que estou concluindo ele só é possível
para certificados SSL em software, com certificado A1 por exemplo. Será que
estou errado?
Já estou recorrendo também a colegas e grupos de discussão PHP. Até agora, em
funções nativas do PHP, não encontrei nada que repasse estas credenciais e
interceda nos processamentos que envolvam a chave privada que fica na mídia e o
PIN que fica no cache do navegador.
Valeu por lembrar da necessidade de confiança do Postgresql na cadeia de
certificados.
Caso tenham mais alguma ideia ou saibam de algum caso de sucesso, conto com a
ajuda de todos.
Abs,
João
Em 14-02-2013 19:15, João Cesar escreveu:
Caros,
Estou com a tarefa de implementar um sistema que tenha a autenticação
feita com o uso de certificado digital gravado em smartcard, com a chave
privada protegida.
A Autenticação na aplicação (Apache + PHP) é simples e já está
funcionando, porém estou pesquisando uma forma, se for tecnicamente
viável, de prover a autenticação ao banco PostgreSQL também com a
utilização destes certificados digitais.
A ideia não é recorrer a aplicações client/server.
Deixe-me ver se entendi:
1) A autenticação do usuário se dá por smart-card na aplicação.
2) Você quer usar a mesma credencial para conectar no PostgreSQL?
Ainda não consegui, utilizando o método cert do pg_hba: ocorre a
mensagem Unable to connect to PostgreSQL server: FATAL: conexão requer
um certificado cliente válido.
Veja só: normalmente, aplicações PHP são assim:
Cliente - Apache+PHP - PostgreSQL
Logo, quem se autentiva na aplicação é seu usuário, e quem se autentica
no PostgreSQL é sua aplicação.
Como sua aplicação não tem certificado válido, ela não consegue se
conectar ao PostgreSQL gerando o erro que está vendo..
Recorro à ajuda dos colegas para saber se é possível esta autenticação e
como poderia fazê-la.
Talvez você tenha que recorrer a algum grupo de desenvolvedores PHP, e
ver se alguém sabe como passar o certificado do usuário direto para o
banco de dados. Pode não ser possível, uma vez que o usuário é cliente
da aplicação, não do banco.
O sistema que está sendo desenvolvido não ficará em nenhum ambiente com
autenticação openLDAP, AD ou outra do gênero, daí o interesse de se
utilizar os certificados digitais em todo o processo.
É um case interessante mesmo.
Verifique na documentação do PHP como usar o método pg_conect
(certamente não dará com pg_pconnect) e veja se ele tem suporte a passar
o certificado. Nota: os certificados dos usuários terão de ser assinados
por uma CA conhecida pelo PostgreSQL.
[]s
__
Flavio Henrique A. Gurgel
Líder de Projetos Especiais
Consultoria, Projetos Treinamentos 4LINUX
Tel1: +55-11.2125-4747 ou 2125-4748
www.4linux.com.br
email: fla...@4linux.com.br
__
FREE SOFTWARE SOLUTIONS
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral