Realms no Tomcat

6 respostas
M

Olá pessoal!
Estou com um problema em uma aplicação que usa segurança gerenciada por container no tomcat. O que ocorre é o que ao tentar logar usando j_security_check não autentica nunca. Nenhum erro é logado no console.

vai ai minhas configurações:

APP/MET-INF/context.xml

<Resource name="jdbc/MyAppWebOracle" scope="Shareable" type="javax.sql.DataSource"
			  driverClassName="oracle.jdbc.driver.OracleDriver"
			  url="jdbc:oracle:thin:@ip:porta:mybdname"
			  factory="org.apache.commons.dbcp.BasicDataSourceFactory"
			  username="myuser"
			  password="xpto"
			  validationQuery="select sysdate from dual"
			  maxWait="3000"
			  maxIdle="100"
			  maxActive="-1"
	/>


<Realm className="org.apache.catalina.realm.DataSourceRealm"
			localDataSource="true"
   			dataSourceName="jdbc/MyAppWebOracle" 
   			userTable="usuarios" 
   			userNameCol="login" 
   			userCredCol="senha"
   			userRoleTable="usuarios" 
   			roleNameCol="id_perfil" 
   			digest="MD5"/>

MYAPP/WEB-INF/web.xml

<login-config>
				<auth-method>FORM</auth-method>
				<realm-name>MyAppWebRealm</realm-name>
				<form-login-config>
					<form-login-page>
						/WEB-INF/jsp/index.jsp
					</form-login-page>
					<form-error-page>
						/WEB-INF/jsp/index.jsp?error=autenticacao
					</form-error-page>
				</form-login-config>
			</login-config>

			<!-- Colocar os perfis disponiveis aqui -->
			<security-role>
				<description>Administrador</description>
				<role-name>1</role-name>
			</security-role>
			<security-role>
				<description>Usuário</description>
				<role-name>2</role-name>
			</security-role>
			<security-role>
				<description>Cliente Master</description>
				<role-name>3</role-name>
			</security-role>
			<security-role>
				<description>Cliente Usuário</description>
				<role-name>4</role-name>
			</security-role>
			<security-role>
				<description>Cliente Consulta</description>
				<role-name>5</role-name>
			</security-role>

			<!-- Restrições de Segurança -->
			<security-constraint>
				<web-resource-collection>
					<web-resource-name>MyAppWebRealm</web-resource-name>
					<description>
						acessível por usuários autenticados com perfil
						cliente
					</description>
					<url-pattern>*.jsp</url-pattern>
					<url-pattern>*.do</url-pattern>
					<url-pattern>*.htm</url-pattern>
					<http-method>GET</http-method>
					<http-method>POST</http-method>
					<http-method>PUT</http-method>
					<http-method>DELETE</http-method>
				</web-resource-collection>
				<auth-constraint>
					<role-name>*</role-name>
				</auth-constraint>
			</security-constraint>

Arquivo index.jsp

...
<form method="POST" action="j_security_check" id="form">
...

6 Respostas

ricardolecheta

a ordem no seu web.xml ta errada:

é security-constraint, login-config e depois role…

quanto ao realm no tomcat quando da erro é foda de descobrir mesmo, boa sorte.

usando simplesmente o tomcat-users.xml funciona?

R

manda a estrutura da sua tabela de usuários e roles que pode ser isso.

M

ricardolecheta:
a ordem no seu web.xml ta errada:

é security-constraint, login-config e depois role…

quanto ao realm no tomcat quando da erro é foda de descobrir mesmo, boa sorte.

usando simplesmente o tomcat-users.xml funciona?

Ok, fiz a correção da ordem.

Agora, como eu faço para alterar minha configuração para utilizar tomcat-users.xml?

M
desc usuarios
Name                           Null     Type                                                                                                                                                                                          
------------------------------ -------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
ID                             NOT NULL NUMBER                                                                                                                                                                                        
NOME                                    VARCHAR2(60)                                                                                                                                                                                  
LOGIN                             VARCHAR2(10)                                                                                                                                                                                  
SENHA                                   VARCHAR2(32)                                                                                                                                                                                                                                                                                                   
E_MAIL                                  VARCHAR2(50)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
ID_PERFIL            NOT NULL NUMBER                                                                                                                                                                                        
DATA_MANUTENCAO                         DATE
R

Parece que você configurou de forma errada a atribuição de perfil, se não me engano o tomcat necessita de duas tabelas, uma pra usários e outra pras roles:

create table users (
  user_name         varchar(15) not null primary key,
  user_pass         varchar(15) not null
);

create table user_roles (
  user_name         varchar(15) not null,
  role_name         varchar(15) not null,
  primary key (user_name, role_name)
);

Aí ficaria assim:

<Realm className="org.apache.catalina.realm.DataSourceRealm"
 			localDataSource="true"
    			dataSourceName="jdbc/MyAppWebOracle" 
    			userTable="users" 
    			userNameCol="user_name" 
    			userCredCol="user_pass"
    			userRoleTable="user_roles" 
    			roleNameCol="role_name" 
    			digest="MD5"/>

Adapte essa configuração.

Bom, acho que é por aí.

[]´s

R

http://www.linux-sxs.org/internet_serving/c619.html

Criado 24 de maio de 2007
Ultima resposta 24 de mai. de 2007
Respostas 6
Participantes 3