@DeclareRoles >> autenticação e segurança JavaEE

Pessoal, vi que posso dizr qum pode ou nao executar os metodos em um Stateless no java ee
to comecando um projeto e quero saber se tenho como fazer essas roles serem criadas dinamicamente por alguem,alguma cisa, vir do banco
nao posso setar
admin, gerente, contabil
pra usa um método pois essas roles são dinamicas. podem nao existir mais…
nao posso deixar isso no código…
espero uma ajuda ai galera
forte abraço!
vlw

Aconselho você a ler a documentação do JAAS, que é muito bem documentada. Além disso no J2EE tutorial tem muitas informações de como fazer a segurança de seus EJBs.

Mas vou corrigir você. Você pode controlar a autorização tanto de stateless beans como stateful beans, inclusive MDB, schedulers. Não sei te dizer se isso se aplica para Backing Beans.

Basicamente você pode usar anotações @RolesAllowed, @PermitAll e @DenyAll tanto como classe, método ou ambos. Você também pode injetar um EJBContext e fazer a validação manual via EJBContext.isCallerInRole.

Abraços

Bom a pior das duvidas acredito que não tenho mais…
achei que teria que ser sempre fixo no codigo essas coisas…
mas pelo que vc falou pode ser colocado metodos e o negócio ficar mais dinamico!
obrigado pela dica. abraços!
bom final de semana!

Amigo garcia-jj
Vi um outro post que vc respondeu sobre esse mesmo assunto!
para usar grupos, e as roles declarativas pertencem a grupos…etc…
mas
estou com o mesmo problema do cara que vc tentou ajudar no outro post…
mas…to procurando e procurando, lendo manuais do java EE
enfim, do JAAS…
mas oque eu queria realmente é saber se consigo definir roles de acesso dinamicamente e não cravado no código!
nao achei anda que me informasse disso nos tutoriais que li!
ajuda ai galera!!!
abraços!

Hmm, eu tinha explicado isso lá, acho que você não entendeu. Mas vamos lá de novo.

A autorização do JEE usa JAAS por baixo dos panos. No JAAS você tem um Principal, que é quem está autenticado; você tem um Subject, que é o recurso que você quer usar; e você tem as roles.

Uma role nada mais é que uma permissão (falando a grosso modo). Imagina então que você tenha permissões do tipo ALTERAR_USUARIO, VER_USUARIO, ALTERAR_CLIENTE, VER_CLIENTE. Isso sim dele ser manual e estará fixo no código como:

[code]public class ClienteBean {
@RolesAllowed(“VER_USUARIO”)
List listarClientes();

@RolesAllowed("VER_USUARIO")
Cliente verCliente();

@RolesAllowed("ALTERAR_USUARIO")
void atualizar();

@RolesAllowed("ALTERAR_USUARIO")
void excluir();

}[/code]

Agora falando no JEE você terá na sua aplicação um usuário, e esse usuário poderá participar de um ou mais grupos. Lembre-se que um grupo NAO é uma role. Os grupos podem ser dinamicos.

No seu ejb-jar você define a tradução entre grupos e roles. Por exemplo, o grupo ADMIN tem as roles VER_USUARIO, ALTERAR_USUARIO, VER_CLIENTE e ALTERAR_CLIENTE, já o grupo USER terá acesso apenas às roles VER_USUARIO e VER_CLIENTE.

Ou seja, ROLES ficam fixas no código, mas GRUPOS não.