Nossa.. muito bom Matheus! Sua dica vai resolver meu problema.. Vou ganhar um fôlego até pensar certinho sobre criar as roles diretamente no banco..
Obrigado a todos que deram suas sugestões.. Abraço! Renato Em 16 de novembro de 2012 11:55, Matheus de Oliveira < matioli.math...@gmail.com> escreveu: > > 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 > >
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral