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: [email protected] ______________________________ FREE SOFTWARE SOLUTIONS _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
