Tutorial de JAAS

Este breve tutorial de JAAS (Java Authentication and Authorization Service), apresenta de forma rápida a API padrão do Java para segurança (Autenticação e Autorização) de aplicações.

http://www.guj.com.br/java.tutorial.artigo.184.1.guj

Autor: Fábio Viana

JAAS é legal por que por ser padrão, mas será que não da para ser mais maleável?

Eu queria dentra da minha própria aplicação web ter tudo o nescessário para a autenticação e autorização. Não queria ter que ficar colocando o .jar no lib, ficar colocar um arquivo de policy e ter que fica fazendo Djava.security.auth.login.config=$CATALINA_HOME/conf/login.config…

tem como fazer isso ou é pedir demais?

Tipo assim, link para o tutorial, aqui :thumbup:

Hum, acho que não fui bem claro. No tutorial explica como usar JAAS, mas tendo que fazer configurações específicas noi container, coisa que eu não gostaria de ter que fazer.
O que eu quero saber é se tem jeito de colocar todas as configurações nescessárias dentro da própria aplicação web.

O JAAS é assim mesmo, rígido, inflexível, configurableableable, etc…
Mas também serve pra aplicações que você tem que autenticar em diferentes locais, e permite que ora sua fonte de autenticação seja um xml, ora seja um database, ora seja no s.o. , etc…

Eu mesmo to tentando fazer uma app usando JAAS eestou sofrendo. Cada tutorial de JAAS que acho segue uma linha de se fazer a mesma coisa. O fato é que no JBoss 4.0.4-GA, com EJB 3.0, eu não conseguir fazer funcionar.

Me ocorre o erro:

[quote]ERROR [UsersRolesLoginModule] Failed to load users/passwords/role files
java.io.IOException: No properties file: users.properties or defaults: defaultUsers.properties found
at org.jboss.security.auth.spi.Util.loadProperties(Util.java:313)
…[/quote]

Parece que ele ignora a configuração que eu fiz no $JBOSS_HOME/server/default/conf/login-config.xml e pega alguma outra default.

Só pra constar, eu utilizei este tutorial aqui: http://www.javaworld.com/javaforums/showthreaded.php?Cat=2&Number=2500&page=0

No JBoss 4.0.4-GA eu só precisei alterar o arquivo loging-config.xml. Usei uma implementação padrão para acesso ao BD. Só para constar, o jeito que fiz não tem muito a ver com este tutorial, pois aqui ele criou as classes e etc.

Eu só configurei o web.xml, o jboss-web.xml e o login-config.xml.

Você ainda pode disponibilizar a configuração do JAAS num arquivo SAR, como um serviço, e aí nem o login-config você precisa alterar, é só configurar isso dentro do SAR.

Eu fiz assim: http://www.guj.com.br/posts/list/42685.java#226421
porém ainda tenho algumas dificuldades.

Oi gente, estou tentando utilizar esse tutoria, mas fiquei com algumas dúvidas e trechos que eu empaquei…

Primeiro, esse DataSource da linha que tá na linha 47 do GujLoginModule é daqui: javax.sql.DataSource ???

Segundo, o que segnificam essas linhas:
dataSourceName=“jdbc/GUJ” (em login.config)
e:

045 Context initContext = new InitialContext(); 046 Context envContext = (Context) initContext.lookup("java:/comp/env"); 047 DataSource ds = (DataSource) envContext.lookup(dataSourceName); 048 conn = ds.getConnection();
não creio que com isso pegaria minha conexão e não sei como fazê-lo. Estou usando o MySQL e a aplicação usa um esquema XX (a url de conexao eh: http://localhost:3306/XX ), como eu posso capturar a conexão?

por enquanto é soh :wink:

Olá Comunidade Java,

Estou tentando implementar o exemplo do Tutorial JAAS, mas não estou conseguindo autenticar.
Minha dúvida é igual a do andersonpablo. Como a minha aplicação obtém a conexão com o banco de dados???
Estou usando o Tomcat 5.5.17
Banco de Dados SqlServer2000.
Segui os passos do tutorial, mas quando entro com login e senha, sempre sou redirecionado para a página de erro.jsp configurada no web.xml da aplicação.
Na barra de endereço fica com http://localhost:8080/guj/j_security_check

Qualquer ajuda, agradeço muito.

Clarck Maciel

http://www.paulovittor23.org/?p=15

[quote=Rubem Azenha]Hum, acho que não fui bem claro. No tutorial explica como usar JAAS, mas tendo que fazer configurações específicas noi container, coisa que eu não gostaria de ter que fazer.
O que eu quero saber é se tem jeito de colocar todas as configurações nescessárias dentro da própria aplicação web.[/quote]

Acho que você está procurando isso aqui: Tomcat Realm: Controle de acesso gerenciado pelo Container Web.

[],
AC

Olha…

Eu estou trabalhando em um projeto no qual estou tendo que implementar a autenticação JAAS. Desenvolvi de um jeito para que seja o mais configurável possível, não só com relação à LoginModules, mas também com relação à fonte das configurações para os módulos de login e tudo mais. Tive também que implementar um novo LoginContext, para o tratamento de alguns métodos que não foram previstos (como por exemplo, troca de senha e envio de senha para e-mail).

A idéia final é que a maioria das configurações possa ser feita em tempo de execução, ou seja, através da própria aplicação eu consiga definir quais são as configurações. Ou, no máximo, fazendo apenas um redeploy da própria aplicação, sem parar o servidor.

Essa parte já consegui fazer funcionar. Quando minha aplicação “sobe” no jboss, com ele já rodando, tudo funciona que é uma beleza. O problema é se o servidor jboss é iniciado com a aplicação dentro dele ela desconfigura configurações jaas do próprio servidor de aplicações, fazendo com que alguns serviços (como o jmx-console) deixem de fazer a autenticação padrão que eles utilizam.

O que eu não achei em lugar nenhum foi como utilizar configurações personalizadas. Criei algumas subclasses da classe Configuration, que pelo que eu percebi é uma classe “global” em cada instância de servidor, o que eu já achei estranho (deveria ser por aplicação). Mesmo instanciando essas classes (por exemplo, uma delas lê as configurações que ficariam no login-config.xml em um outro arquivo dentro da minha aplicação), ele continua sobrescrevendo o Configuration principal.

Já procurei por bilhões de tutoriais na internet, mas mesmo assim não consegui resolver o problema. Todos os tutorias que eu encontro ele não chega nem a mexer com a possibilidade de extensão de Configuration. Já baixei o fonte, javadoc e tudo mais, só que não consegui resolver esse problema.

Bom, resumindo: sim, é possível uma configuração totalmente feita pela aplicação dos módulos e configurações JAAS; a questão é como fazê-lo sem matar a configuração existente no Jboss.

Alguém tem algum palpite?

Bom…

Achei aqui algo pra quem quer utilizar JAAS:

http://www.jaasbook.com/

O melhor tutorial que eu já ache sobre JAAS. Mas anda não resolve (explicitamente) meu problema.

No projeto de componentes do framework demoiselle tem um componente de segurança que faz o meio de campo com o JAAS…

http://demoiselle-comp.sourceforge.net/demoiselle-security/docs.html

Tem um archetype para gerar os módulos do provider do JAAS que são quase sempre parecidos: http://demoiselle-comp.sourceforge.net/demoiselle-archetype-security-provider/docs.html

Espero que ajude

[quote=Fabricio Cozer Martins]O JAAS é assim mesmo, rígido, inflexível, configurableableable, etc…
Mas também serve pra aplicações que você tem que autenticar em diferentes locais, e permite que ora sua fonte de autenticação seja um xml, ora seja um database, ora seja no s.o. , etc…
[/quote]

Essa fonte de autenticação pode ser uma Web Service também?

Obrigado,

Pode ser um webService sim!

Basta que vc crie seu LoginModule e lá defina seu Provider acessando o serviço.

eu gosto do acegi

CAS é seu amigo

Uma dúvida sobre o JAAS.
Também é possível implementar em aplicações DESKTOP?

Se sim, onde posso achar um tutorial pois, todos os que achei são exemplos para WEB.

Desde já agradeço!

Abraços