Em 14/11/2012 17:36, "Renato Ricci" <renatoricc...@gmail.com> escreveu: > > Na realidade, pensei em criar os usuários no banco pois quero criar auditoria nas minhas tabelas e pegar o current_user. Tento um único usuário conectado no banco ficaria meio trabalhoso eu fazer essa auditoria, pois eu teria que criar uma coluna chamada 'usuário' e alimentá-la através da minha aplicação quando um usuário fizesse ins/upd/del nas tabelas. Creio que através de triggers seria o ideal. Assim posso seguir esse exemplo de auditoria: http://wiki.postgresql.org/wiki/Audit_trigger
Se for só por isso, então você não precisa de ficar criando ROLES. Você pode fazer o seguinte: 1. Edite o postgresql.conf e adicione uma classe em CUSTOM_VARIABLE_CLASSES (se for na 9.2, não precisa disso). Por exemplo, app. 2. Pela sua aplicação assinale uma variável nessa classe. Ex: SER app.current_user TO seu_usuário; 3. Use essa variável na trigger. Agora, usar as roles, pode ser uma boa para segurança. > > valeu! > > Renato > > > Em 14 de novembro de 2012 17:29, JotaComm <jota.c...@gmail.com> escreveu: > >> Opa, >> >> Em 14 de novembro de 2012 17:25, Renato Ricci <renatoricc...@gmail.com> escreveu: >>> >>> Humm! Entendido Matheus! Faz sentido... Vou ver o que posso fazer para passar a senha descriptografada.. talvez eu execute o comando create role direto da aplicação quando o usuário digitar a senha(antes de criptografar) ao invés da trigger. Mas vou analisar com cautela a situação.. >>> >>> De qualquer maneira muito obrigado pelo esclarecimento.. >> >> >> Uma curiosidade: Para cada usuário da aplicação você vai criar um usuário no banco? Realmente existe esta necessidade? >>> >>> >>> T+ >>> >>> Renato >>> >>> >>> Em 14 de novembro de 2012 17:17, Matheus de Oliveira < matioli.math...@gmail.com> escreveu: >>>> >>>> >>>> 2012/11/14 Matheus de Oliveira <matioli.math...@gmail.com> >>>>> >>>>> >>>>> 2012/11/14 Renato Ricci <renatoricc...@gmail.com> >>>>>> >>>>>> Não acontece erro.. O usuário é criado normalmente no banco.. apenas sua autenticação que não é aceita.. >>>>>> Fiz alguns testes, tipo >>>>>> >>>>>> Criei um usuario na mão: >>>>>> >>>>>> Create role teste with password '123456'; >>>>>> a senha gerada para o usuario teste é: >>>>>> 'md5ce5b428f93ab83af44e2780e51c339e9' >>>>>> >>>>>> porém, um usuário da minha tabela, também com a senha 123456, quando a trigger executa o create role, o usuário é criado com a senha: >>>>>> 'md5e10adc3949ba59abbe56e057f20f883e' >>>>>> >>>>>> Creio que a autenticação não esteja funcionando por esse motivo.. >>>>>> >>>>> >>>>> Exato. >>>>> >>>>> O PostgreSQL não faz um MD5 puro, ele utiliza um sal (ou salt). Sem a senha original não vai dar, a não ser que você procure pelo exato método usado para o sal, é possível que seja baseado no MD5 original da senha, daí será possível, carece de pesquisa (ou estudo do código-fonte). >>>>> >>>> >>>> >>>> Fiz uma pergunta rápida no IRC, e parece que o método é md5(senha + salt), sendo o "salt" baseado no nome do usuário. Logo, a partir da senha já em MD5 não vai rolar. >>>> >>>> O ideal é você recriar senhas para esses usuários e pedirem pra recadastrarem, ou então, cria um furo de segurança temporário na aplicação e salva a senha quando o cara logar (evite). >>>> >>>> >>>>> >>>>>> >>>>>> >>>>>> >>>>>> Em 14 de novembro de 2012 15:42, JotaComm <jota.c...@gmail.com> escreveu: >>>>>> >>>>>>> Opa, >>>>>>> >>>>>>> Em 14 de novembro de 2012 15:26, Renato Ricci < renatoricc...@gmail.com> escreveu: >>>>>>>> >>>>>>>> Olá pessoal.. >>>>>>>> >>>>>>>> Tenho uma tabela de usuários onde armazeno o usuário e senha de acesso do sistema. A senha já está criptografada com MD5. >>>>>>>> >>>>>>>> Eu preciso replicar esses usuários para a tabela nativa de usuários do PostgreSQL através do comando create role e manter a mesma senha. Já tentei o comando abaixo, mas sem sucesso: >>>>>>>> >>>>>>>> Trigger Function: >>>>>>>> DECLARE >>>>>>>> v_senha varchar(); >>>>>>>> BEGIN >>>>>>>> v_senha := 'md5' || (new.usu_senha); >>>>>>>> execute 'CREATE ROLE ' || new.usu_usuario || ' NOINHERIT LOGIN UNENCRYPTED PASSWORD ' || quote_literal(v_senha) ; >>>>>>>> return new; >>>>>>>> END; >>>>>>>> >>>>>>>> Alguma sugestão? >>>>>>> >>>>>>> >>>>>>> Qual o problema/erro que você esta tendo? >>>>>>>> >>>>>>>> >>>>>>>> >>>> >>>> Abraços.
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral