JBoss Seam - Identity Management

0 respostas
clebiovieira

Pessoal estou criando uma aplicação do zero e acho importante começa-lo com a parte de segurança e acesso bem definidos.
Estou usando o JBoss Seam in Action como literatura e achei algo no link: http://relation.to/10904.lace

Criei um novo projeto EAR usando o Jboss Tools do Eclipse, criei as classes: Usuario e Permissao.
Depois implementei o método: authenticator.authenticate

Até aí tudo perfeito, funcionou… Continuei a ler o livro e verifiquei que tem outra forma de controle de acesso.
Assim:

Modifiquei o components.xml, comentei <security:identity authenticate-method> e inclui <security:jpa-identity-store>

&lt;drools:rule-base name="securityRules"&gt;
      &lt;drools:rule-files&gt;
         &lt;value&gt;/security.drl&lt;/value&gt;
      &lt;/drools:rule-files&gt;
   &lt;/drools:rule-base&gt;

   &lt;security:rule-based-permission-resolver security-rules="#{securityRules}"/&gt;

&lt;!--    &lt;security:identity authenticate-method="#{authenticator.authenticate}" remember-me="true"/&gt; --&gt;
      
[b]   &lt;security:jpa-identity-store user-class="com.clebio.crs.entity.Usuario"
   								role-class="com.clebio.crs.entity.Perfil"/&gt;

   &lt;security:jpa-permission-store user-permission-class="com.clebio.crs.entity.UserPermission"/&gt;[/b]


   &lt;event type="org.jboss.seam.security.notLoggedIn"&gt;
      &lt;action execute="#{redirect.captureCurrentView}"/&gt;
   &lt;/event&gt;
   &lt;event type="org.jboss.seam.security.loginSuccessful"&gt;
      &lt;action execute="#{redirect.returnToCapturedView}"/&gt;

Também tive que modificar as entidades Usuario e Perfil acrescentando a elas algumas anotações sobre as Roles.

@Entity
public class Usuario implements Serializable{
	private static final long serialVersionUID = -6753350298546832436L;
	
	@Id @GeneratedValue
    private Long id;    
    
    @Length(max = 100)
    @UserPrincipal
    private String nome;
    
    @UserPassword(hash="SHA")
    private String senha;
    
    @Length(max = 100)
    private String razao_social;
    
    @Length(max = 14)
    private String cpf_cnpj;
    
    @UserRoles
    @ManyToMany
    @JoinTable(name="USUARIO_PERIL",
    			joinColumns={@JoinColumn(name="usuario_id")},
    			inverseJoinColumns={@JoinColumn(name="perfil_id")}
    )
    private List&lt;Perfil&gt; perfis;
      
    @Version
    private Integer version;

   Getters e seters....
@Entity
public class Perfil implements Serializable{

	private static final long serialVersionUID = -2043396556400492191L;
	
	@Id @GeneratedValue
    private Long id;    
    
	@RoleName
	@Length(max = 100)
    private String nome;
    
    private String descricao;
    
    @ManyToMany(mappedBy="perfis")
    private List&lt;Usuario&gt; usuarios;
    
    @Version
    private Integer version;

Getters e seters....

Pessoal, e agora ??? Quais são os próximos passo, quando se escolhe esse tipo de controle de identificação me parece que
não se usa o método de autenticação criado pelo Seam. Não consegui entender direito a documentação do Seam.

Alguém já teve experiência com isso, qualquer ajuda é bem vinda.

Abraços…

Criado 3 de dezembro de 2011
Respostas 0
Participantes 1