Há muito tempo tenho usado o RunAs em testes esporádicos em minhas aplicações com EJB, e funciona bem quando quero simular algum usuário.
Agora em uma aplicação minha tenho vários métodos que são invocados apenas por EJB Schedulers. Então anotei esses métodos no EJB como @RolesAllowed(“SYSTEM”) e no meu Scheduler anotei @RunAs(“SYSTEM”) porque sempre que um Scheduler chama meus métodos o Principal retornado é ANONYMOUS. E não quero deixar meus EJBs aberto para um ANONYMOUS.
Porém sempre pensei no RunAs como para testes, e a documentação não é bem clara se realmente RunAs é apenas para testes ou posso usar em ambiente de produção normalmente com o security manager ativo.
Estou certo ou errado? Posso usar normalmente RunAs ou há restrições quando a ele? Ou há alguma outra forma de rodar um scheduler como um “usuário de sistema”?
Ou seja, alí diz que permite ao desenvolvedor testar um EJB forçando ele a rodar como outro Principal. Isso eu sempre usei mesmo para testes, porém estou na dúvida se posso usar assim normalmente sem violar a segurança do sistema, pois eu estou forçando um ANONYMOUS a ser outro usuário. Fiz isso porque não achei outra forma de rodar o scheduler como se fosse um “usuário sistema”.
Minha preocupação é no sentido disso ser portável (embora esteja na spec) e se há problemas nisso rodando em ambiente com o security-manager ativo. Procurei na documentação algo sobre isso, mas não achei nada muito claro se há problemas ou não.
partenon
Nao vejo nenhum problema em rodar com RunAs Mas sempre que voce “forca” algo, voce precisa se certificar de que essa informacao eh valida 100% do tempo. No seu caso, significa se assegurar que somente o scheduler vai chamar este EJB.