Autenticação e Autorização

Pessoal,

Estou desenvolvendo um pequeno sistema web, que necessitará de login dos usuários previamente cadastrados para alterações na base de dados (segurança é um ponto que deve ser fortemente levado em consideração nesse projeto).

Pensei primeiramente em usar sessão, mas não acho uma forma muito segura (cliente podendo acessar e modificar o cookie).

Tô pensando em utilizar JAAS (já estou dando uma pesquisada pra encontrar material).

O que vocês recomendam: usar JAAS mesmo? Se a resposta for sim, se puderem me passar links com bons materiais para estudo e implementação.

Desde já muito obrigado pela atenção e ajuda.

Abraços.

Tem um tutorial disso no blog do jakefrog.

Vê se te ajuda.

Validação de Login de Usuário com JSF e JAAS

JAAS é muito bom, muito dificil de ser quebrada a sua proteção, olhe o tutuorial recomendado por que é muito bom o tutorial, concerteza voce consiguira implementar a protecao utilizando esse tutorial, boa sorte

Olá digaoneves e CristianPalmaSola10,

primeiramente, muito obrigado pela atenção e ajuda.
Vou ler o material que vocês recomendaram (apesar de usar JSF e Jboss, que não poderei utilizar nesse projeto).

E quanto a este tutorial, o que vocês acham dele? http://www.guj.com.br/articles/184

Abraços.

Usa um framework full-stack que te oferece essas funcionalidades:

http://www.mentaframework.org/mtw/Page/Authentication/mentawai-autenticacao
http://www.mentaframework.org/mtw/Page/Authorization/mentawai-autorizacao

Agora a grande pergunta: usar apenas session é algo muito vulnerável?

O que vc quer dizer?

Você usaria apenas Httpsession em um sistema em que a segurança (ter uma garantia maior da autenticidade de quem está acessando o sistema) é importante?

Sim…
Segurança de uma solução não esta relacionado com gerenciamento de estado…e sim outros fatores.

Como quais?

Segurança não tem nada relacionado com gerenciamento de estado e sim em garantir 3 items - Integridade, Confidencialidade e Disponibilidade.
Segurança hoje é também a habilidade em proteger a solução, seus componentes e serviços de qualquer evento malicioso.

Recursos como criptografia, certificados digitais, firewall, DMZ, metologia de desenvolvimento, praticas de arquitetura são algumas dos principais itens para se construir uma solução segura.

Isso é um assunto bem grande e extenso…caso tenha interesse temos um curso de ARQUITETO JAVA no qual abordamos tudo isso e muito mais - http://fernandofranzini.wordpress.com/2012/05/08/arquiteto-de-software-java/

Ola Fernando,

Primeiramente, muito obrigado por disponibilizar parte do seu tempo pra me ajudar.

[quote]Segurança não tem nada relacionado com gerenciamento de estado e sim em garantir 3 items - Integridade, Confidencialidade e Disponibilidade.
Segurança hoje é também a habilidade em proteger a solução, seus componentes e serviços de qualquer evento malicioso. [/quote]

Concordo com você, talvez dentro da Integridade possa se encaixar a autenticidade (já que o sistema não tem nunca como ter 100% de certeza quem é que está do outro lado).
Li o link que me passou, achei muito interessante, principalmente quando você fala sobre transmissão em um comentário.

Eu já desenvolvi alguns sistemas em php, em uma delas meu cliente não queria pagar certificado ssl, acabei me virando e criando um algoritmo pra transformar o valor do input no navegador num hash md5 (evitando problemas caso a senha fosse “capturada” por ai), e no lado do servidor, armazenando a senha em md5 também.

Estou pensando em fazer o mesmo neste sistema. Na sua opinião(acho que você tem muito mais experiência do que eu em desenvolvimento): eu já teria uma boa segurança? Ou você me indica algo a mais?

Muito obrigado.

Abraços.

Sim…mas entenda que não é possivel invadir o servidor do container e roubar dados da sessão de alguem… as vulnerabilidade estão no protocolo HTTP…e por ai vai…

Em Java vc pode gerar um certificado digital sem registro de CA e rodar em canal HTTPS tranquilamente. Eu uso muitos hoje para assinar applets e soluções com perfil de intranet. Ja na web não é bom fazer tal operação uma vez que denegride a imagem publica da corporação responsavel

não perca tempo reiventando a roda…principalmente recursos de infra estrutura…em java toda a infra estrutura ja esta pronto…

Olá Fernando,

Esta me parece uma boa solução pro meu caso, já que o sistema é apenas de acesso interno da empresa(intranet). Vou dar uma pesquisada sobre isso.

Quando o sistema é apenas para uso em uma intranet, há mais cuidados a se tomar por ser apenas para intranet, algo que você possa me indicar para ler? (de preferência em português, meu inglês tá péssimo).

Muito obrigado por toda ajuda até agora.

Abraço.

É o inverso…solução em uma intranet tem menos requisito de segurando do que uma solução exposta na internet.

Material relacionado com segurança infelizmente só em inglês mesmo…

Se vc quizer 100% de segurança vc tem que usar https em todas as suas requisições.

Sem https alguém pode sniffar a rede e pegar a sua session id passando no cookie e aí um abraço.

Se bem que se não estou enganado, cada session ID deve estar associada a um IP no server side. Então se o contanier web (tomcat, resin, etc.) recebe a session ID e percebe que o IP da onde ela vem não é o mesmo da requisição inicial ele não autentica. Daí o hacker teria que fazer IP spoofing, o que é automático se o cara for uma companheiro de trabalho e estiver na mesma rede que vc.

Por isso que o gmail é https pra tudo, ou pelo menos te dá essa opção.

Por que todos os sites então não usam https pra tudo? Performance… O google pode pagar pagar por mais máquina, mais bandwith, mais performance…

PS: <empolgado>Karamba, acho que expliquei um livro de 100 páginas em meia dúzia de frases !!! cool !!!</empolgado>

Se você é um cara esperto após ler o que eu disse acima vc vai poder me explicar por que os sites de qualidade sempre te pedem a senha atual para trocar de senha. Algúem saberia explicar porque? :wink:

Ola saoj,

Seria por isso que eles pedem a senha atual, pra saber se é um sniffer que tá tentando alterar a senha?

Pois é, seria maravilhoso se desse pra usar https a cada requisição, mas imagina isso num servidor com Pentium 4 com 1 GB de RAM (DDR ainda)?!! Ele mal aguento outros dois sistemas que a empresa hospeda nele, outro dia até memory overflow deu! ( nessas horas percebo que não ter colocado meu nome real como nick foi uma boa idéia, se meu chefe vê eu falando isso do nosso equipamento tô ferrado! rs ).

E olha, tá de parabéns pelo resumo mesmo, prático e coeso.

Fernando,

se tiver algo em inglês, se puder me fazer o favor de me passar, que eu vou me virando.

Muito obrigado aos dois, por contribuírem com o fórum (já que se outra pessoa tenha as mesmas dúvidas um dia, poderá encontrar as respostas aqui) e por sanar as minhas dúvidas.
Se tiverem qualquer link, livro, ou algo que achem que possa me ajudar a aprofundar no assunto, ficarei muito grato se me passarem.

Abraços.