Configurar tomcat JAAS autenticação BD

2 respostas
gRoOve

Olá galera, estou penando aqui pra configurar meu tomcat pra autenticar pelo JAAS usando meu BD. Consegui fazer funcionar de boa usando o tomcat-users.xml, agora estou tentando migrar pro banco mas não consigo. Meu server.xml está assim:

<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">

  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JasperListener" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />

  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost">
       <Realm className="org.apache.catalina.realm.MemoryRealm"
             resourceName="UserDatabase"/>

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      </Host>
    </Engine>
  </Service>
</Server>

Eu sei que eu preciso criar um Resource e um Realm, mas eu devo adicionar os dois componentes no meu server.xml ou substituir pelos existentes?
Eu tentei substituir porém toda vez que tento implantar a aplicação é exigido o login/senha do tomcat e como não estou mais usando o tomcat-users.xml, não consigo autenticar.
Utilizei como referência a documentação oficial http://tomcat.apache.org/tomcat-6.0-doc/realm-howto.html

Fiz a configuração exatamente igual a descrita neste tópico http://www.guj.com.br/java/50297-ajuda-com-datasourcerealm.

2 Respostas

gRoOve

Após mais um pouco de leitura, estou entendendo como funciona o JAAS. Na documentação oficial tenho as seguintes opções de implementação do JAAS:

Não sabia a diferença entre o JDBCRealm, DataSourceRealm e JNDIRealm, após entender o que é uma conexão orientada por JNDI não sei se minha aplicação usando Hibernate se adequa a esta opção ou a JDBCRealm.
Afinal, quando utilizo Hibernate a conexão com o banco é orientada a JNDI? Percebo que não há no código nenhuma informação com relação a url do banco, usuario, senha…tudo está no arquivo persistence.xml do Hibernate.

gRoOve

Consegui fazer o tomcat autenticar pelo BD usando o JDBCRealm, segundo a documentação oficial:

<Realm className="org.apache.catalina.realm.JDBCRealm"
      driverName="org.gjt.mm.mysql.Driver"
   connectionURL="jdbc:mysql://localhost/authority?user=dbuser&amp;password=dbpass"
       userTable="users" userNameCol="user_name" userCredCol="user_pass"
   userRoleTable="user_roles" roleNameCol="role_name"/>

Contudo esta configuração foi realizada no server.xml, gostaria de deixar esta configuração somente para esta aplicação e para todas as outras usar o tomcat-users.xml. Vou tentar colocar o JDBCRealm no context.xml da aplicação.

Estava tendo dificuldades pois ocorreriam erros na hora de implantar a aplicação, acho que falta configurar a aplicação pra usar o JDBCRealm, para isso vou abrir outro tópico.

Criado 16 de abril de 2012
Ultima resposta 18 de abr. de 2012
Respostas 2
Participantes 1