leandrocgsi vlw pela dica, eu ja ouvi fala sobre esse framework, vou verificar. ;)
Mas eu queria mesmo usar so o JAAS.
Fiz um teste, onde achei que ia funcionar. Mas não funcionou!
Pelos tutoriais que andei vendo, de forma geral eles utilizam uma tabela no banco de dados onde é verificado, pelo container, o login, senha e a role para que possa dar a autorização para o usuario em um determinado caminho ou arquivo.
O teste que eu fiz, foi pensando que ele "poderia" verificar login, senha e várias roles. Entao criei as tabelas onde cada usuario poderia ter mais que uma role "setada" nele.
E apresentou o seguinte erro:
01:25:23,113 ERROR [org.jboss.security.authentication.JBossCachedAuthenticationManager] (http-localhost-127.0.0.1-8080-1) Login failure: javax.security.auth.login.LoginException: PB00019: Processing Failed:Query failed
at org.jboss.security.auth.spi.DbUtil.getRoleSets(DbUtil.java:166) [picketbox-4.0.7.Final.jar:4.0.7.Final]
at org.jboss.security.auth.spi.Util.getRoleSets(Util.java:158) [picketbox-4.0.7.Final.jar:4.0.7.Final]
at org.jboss.security.auth.spi.DatabaseServerLoginModule.getRoleSets(DatabaseServerLoginModule.java:265) [picketbox-4.0.7.Final.jar:4.0.7.Final]
at org.jboss.security.auth.spi.AbstractServerLoginModule.commit(AbstractServerLoginModule.java:228) [picketbox-4.0.7.Final.jar:4.0.7.Final]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_10]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_10]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_10]
at java.lang.reflect.Method.invoke(Method.java:601) [rt.jar:1.7.0_10]
at javax.security.auth.login.LoginContext.invoke(LoginContext.java:784) [rt.jar:1.7.0_10]
at javax.security.auth.login.LoginContext.access$000(LoginContext.java:203) [rt.jar:1.7.0_10]
at javax.security.auth.login.LoginContext$4.run(LoginContext.java:698) [rt.jar:1.7.0_10]
at javax.security.auth.login.LoginContext$4.run(LoginContext.java:696) [rt.jar:1.7.0_10]
at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.7.0_10]
at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:695) [rt.jar:1.7.0_10]
at javax.security.auth.login.LoginContext.login(LoginContext.java:595) [rt.jar:1.7.0_10]
at org.jboss.security.authentication.JBossCachedAuthenticationManager.defaultLogin(JBossCachedAuthenticationManager.java:449) [picketbox-infinispan-4.0.7.Final.jar:4.0.7.Final]
at org.jboss.security.authentication.JBossCachedAuthenticationManager.proceedWithJaasLogin(JBossCachedAuthenticationManager.java:383) [picketbox-infinispan-4.0.7.Final.jar:4.0.7.Final]
at org.jboss.security.authentication.JBossCachedAuthenticationManager.authenticate(JBossCachedAuthenticationManager.java:371) [picketbox-infinispan-4.0.7.Final.jar:4.0.7.Final]
at org.jboss.security.authentication.JBossCachedAuthenticationManager.isValid(JBossCachedAuthenticationManager.java:160) [picketbox-infinispan-4.0.7.Final.jar:4.0.7.Final]
at org.jboss.as.web.security.JBossWebRealm.authenticate(JBossWebRealm.java:214) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:280) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:381) [jbossweb-7.0.13.Final.jar:]
at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_10]
Caused by: java.sql.SQLException: Column Index out of range, 2 > 1.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
at com.mysql.jdbc.ResultSetImpl.checkColumnBounds(ResultSetImpl.java:830)
at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5773)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5692)
at org.jboss.jca.adapters.jdbc.WrappedResultSet.getString(WrappedResultSet.java:1360)
at org.jboss.security.auth.spi.DbUtil.getRoleSets(DbUtil.java:135) [picketbox-4.0.7.Final.jar:4.0.7.Final]
... 31 more
No banco de dados havia duas roles para um usuario.
Acho que pelo fato de aparecer esses dois valores impossibilita esse funcionamento.
Mas ainda não desisti do JAAS.
Pensei agora em criar várias roles. Onde vamos ter uma que irá dar acesso a todo conteudo do sistema (admin) e as outra vão permitir apenas algumas partes dela. O usuario que tem a role "admin" tera acesso a todo sistema sempre, e seu atributo "role" dentro da entidade "usuario" nunca será modificada. Já os outros usuario terá o valor do atributo "role" variado, pois ele será modificado de acordo com as permissões que ele possui, gravadas em uma lista. Então se o usuario que tem permissao para acessar os diretorios A e D, o atributo "role" sera modificada (na base de dados da coluna role) sempre que houver necessidade de estar no diretorio A ou D apenas.
Gostaria de sugestoes sobre essa ideia ou de alguma outra no JAAS.
agradeço desde já!