Jaas + tomcat 6

3 respostas
dipeloco

Pessoal to com um problema aqui não guento mais buscar na net alguem pode me ajudar ?

JAAS está retornando 403 porem no meu ver está correto é configurado de forma correta .... vou colocar o codigo aqui. (eu debug o login module e funcionou)

package javacenter.jaas;

import java.security.Principal;
import java.util.Set;

public class User implements Principal{
    private String name;  
    private Set roles;  
      
    public User(){  
          
    }  
    public User(String name){  
        this.name = name;  
    }  
      
    public String getName() {  
        return name;  
    }  
      
    public Set getRoles() {  
        return roles;  
    }  
  
    public void setRoles(Set roles) {  
        if (this.roles == null)  
            this.roles = roles;  
    }

}
package javacenter.jaas;

import java.security.Principal;

public class Role implements Principal{
	private String name;

	
	
	public Role(String name) {
		super();
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Role other = (Role) obj;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}
	
}
public boolean commit() throws LoginException {
		if (user != null && !subject.getPrincipals().contains(user)) {
			subject.getPrincipals().add(user);
		}
		if (roles != null) {
			for (Iterator it = roles.iterator(); it.hasNext();) {
				Role role = (Role) new Role((String) it.next());
				if (!subject.getPrincipals().contains(role)) {
					subject.getPrincipals().add(role);
				}
			}

		}
		return true;
	}
	public boolean login() throws LoginException {
		Callback callbacks[] = new Callback[2];
		callbacks[0] = new NameCallback("Login");
		callbacks[1] = new PasswordCallback("Senha", false);
		try {
			callbackHandler.handle(callbacks);
		} catch (IOException e) {
			e.printStackTrace();
		} catch (UnsupportedCallbackException e) {
			e.printStackTrace();
		}
		String login = ((NameCallback) callbacks[0]).getName();
		String senhaInformado = new String(((PasswordCallback) callbacks[1])
				.getPassword());
		System.out.println((new StringBuilder("LOGIN : ")).append(login)
				.toString());
		System.out.println((new StringBuilder("SENHA_INFORMADA : ")).append(
				senhaInformado).toString());
		if ("marcelo".equalsIgnoreCase(login)) {
			this.roles.add("Administrador Geral");
			this.roles.add("autenticado");
			this.roles.add("Consultor");
		}
		user = new User(login);
		user.setRoles(roles);
		this.sharedState.put("javax.security.auth.principal", user);
		this.sharedState.put("javax.security.auth.roles", roles);
		return true;
	}
<security-constraint>
		<web-resource-collection>
			<url-pattern>/*</url-pattern>
			<http-method>GET</http-method>
			<http-method>POST</http-method>
		</web-resource-collection>
		<auth-constraint>
			<role-name>autenticado</role-name>
		</auth-constraint>
	</security-constraint>
	<login-config>
		<auth-method>FORM</auth-method>
		<form-login-config>
			<form-login-page>/jsp/pages/login/form.jsp</form-login-page>
			<form-error-page>/jsp/pages/login/erro.jsp</form-error-page>
		</form-login-config>
	</login-config>
	<security-role>
		<role-name>autenticado</role-name>
	</security-role>
javacenter {
     javacenter.jaas.LoginModuleImpl debug=true required
         dataSourceName="Marcelo DataSource"
         sqlUser="Query qualquer"
         sqlRoles="Roles query"
    ;
};
<Realm className="org.apache.catalina.realm.JAASRealm"                 
               appName="javacenter"       
               userClassNames="javacenter.jaas.Role"       
               roleClassNames="javacenter.jaas.User"/>

3 Respostas

phfaustino

dipeloco, boa tarde!

Cara, quando da 403 quer dizer que o acesso foi negado, ou seja, vc conseguiu enviar usuário e senha, porém o acesso não foi autorizado.
Agora vc tem que verificar se o usuário/senha informado possui permissão de acesso, ou se está relacionada com alguma Role de acesso.

[]'s

dipeloco

o erro tava no context.xml uauauhuauahuaha
inverti a classe de Role com a d Usuario

phfaustino

que bom então dipeloco… pelo erro mesmo parecia ser algo do tipo…
[]'s

Criado 4 de fevereiro de 2010
Ultima resposta 5 de fev. de 2010
Respostas 3
Participantes 2