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

Reply via email to