Glassfish como adicionar ROLES de forma Programática? só da com GRUPOS?

Bom pessoal, já evoli bastante com glassfish + jaas + jdbc + realms.

Já consegui cutomizar um Realm e um LoginModule.

Infelizmente, não consegui o que queria, que é adicionar as ROLES que estão no banco após o usuário se autenticar. só da pra adicionar GRUPOS não consegui adicionar roles.

Gostaria de saber como adicionar ROLES após o usuário logar, até onde ví a única forma é declarando no sun-web.xml a associação entre GRUPOS e ROLES, mas não descobri como fazer isto sem existir estas roles no sun-web.xml

não há como adicionar ROLES diretamente a um usuário ??? como fazer isso ??

???

Roles e grupos são a mesma coisa. Grupos são dados associados ao Principal e Roles é como o JEE trata. Não tem diferença!!!

[quote=dev.rafael]???

Roles e grupos são a mesma coisa. Grupos são dados associados ao Principal e Roles é como o JEE trata. Não tem diferença!!![/quote]

inteflismente tem sim… se não tiver, então me explica uma coisa

[code]@Stateless
@Remote(InstallRemote.class)
@LocalBean
@DeclareRoles({“teste”})
public class Install implements InstallRemote, Serializable {

//....	

@Override
@RolesAllowed("teste")
public void metodoautorizado() {
	System.out.println("teste executado");
}

//....

}[/code]

[code]@ManagedBean
public class InstallBean {

private @EJB Install install;

//....

public void teste() {
	install.metodoautorizado();
}

//....

}[/code]

quando eu faço autenticação, o grupo “teste” é carregado, e ao tentar acessar em uma página JSF o comando “#{installBean.metodoautorizado}” a resposta que recebo é de falha de permissão, isto ocorre pq eu não tenho a ROLE “teste”, o que tenho é a GRUPO “teste”.

caso que coloque o .xml o trecho

  <security-role-mapping>
	  <role-name>teste</role-name>
	  <group-name>teste</group-name>
  </security-role-mapping>

ai o comando “#{installBean.metodoautorizado}” passa a ser liberado, pois agora eu passo a ter a ROLE teste.


Obs.: mesmo sendo como vc falou, o grupo teste sendo carregado como principal, no subject, o teste se um usuário tem ou não autorização para executar um método não é feito pelos grupos, e sim pelas roles.

Isso acontece pq Role é a maneira como a aplicação enxerga os grupos.

Como vc pode ver, Role tem, apenas, um caracter lógico. Ele representa o “papel” do usuário no sistema. Ele pode ser mapeado a um grupo ou diretamente ao principal. Vc não manipula roles, vc apenas manipula grupos, e a aplicação vai enxergar a mudança dos Roles através do mapeamento q vc coloca no “sun-web.xml”.