Estou estudando com implementar segurança no Java EE 6.
Resolví tentar um teste básico (bem minimalista) usando informações do JAVA EE 6 Tutorial Vol. 1
Usando: Netbeans 6.9 (com glassfish v3):
a) Instanciei o Servidor Glassfish e carreguei o Admin.
b) Em Security, chequei default principal-role-mapping.
c) No file realm criei um usuário + senha + grupo (grupo = GFUser).
d) Em um projeto tipo Enterprise, anotei um método de EJB stateless com: @RolesAllowed(“GFUser”)
Rodei a aplicação, tudo funcionava normal, e quando tentei acessar o método anotado, obtive uma exceção de usuário sem autorização no role.
Minha dúvida é que, pelo que eu havia entendido de minhas leituras, o glassfish deveria ter solicitado a autenticação (BASIC, por default) automáticamente.
Conseguí fazer funcionar acrecentando ao método do managed bean que chama o método anotado do EJB o seguinte:
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
boolean authenticate = request.authenticate(response);
try { …
Será que eu entendí errado ou será que existe alguma forma melhor de fazer (mantendo o minimalismo)?
Agradeço qualquer opinião/orientação que possa receber.