Ola Clebiovieira,
eu penso que você esta confundindo autenticação com autorização de acesso, eu não diria que a query força um campo ‘Role’ mas eu diria que é necessário uma ‘Role’ para o container dar ou não acesso ao seu sistema e outras Roles para definir a autorização de acesso que seu usuário possui na aplicação, embora o JAAS seja uma API relativamente velha, que se não me engano, foi introduzido no Java na versão 1.4 e não tivemos mais atualizações desde então(não vou comentar do JASPIC(Java Authentication Service Provider Interface for Containers)) no meu ver ela ainda é muito robusta, o maior beneficio que vejo é que utilizando o módulo de login configurado no container removemos uma responsabilidade de infraestrutura que geralmente fica na aplicação para o próprio container gerenciar, o que não conseguimos com Spring(não tiro nenhum mérito do Spring pois Spring Security é muito bom). mas respondendo sua pergunta a resposta é que não faz diferença a sua modelagem desde que entregue a ‘Role’ ao container.
Não vai encontrar porque não existe tal método e pior ainda em javax.servlet pois a parte de segurança fica em java.security.*. Para a aplicação não vai importar muito o grupo que você tem, mas sim as ‘Roles’ que os grupos possuem, no JavaEE6, e me corrijam se eu estiver errado, foi adicionado algumas security annotations ex:
@PermitAll
Permite que usuários com qualquer ‘Role’ acessem um método, um EJB ou uma Servlet.
@RolesAllowed({ BusinessConstants.PODE_EXCLUIR })
Se esta anotação estiver no nível do método significa que aquele usuário que tiver o papel de poder excluir podera executar o método mas se a anotação estiver a um nível de classe significa que todos métodos EJB tem a permissão exceto se este outro método tiver outro conjunto de Roles declarado ex: @RolesAllowed({ BusinessConstants.PODE_VER, BusinessConstants.PODE_EDITAR })
caso o usário não tenha permissão de executar tal método uma exception é lançada algo como is not allowed
…outras annotations
Métodos mais comuns…
boolean isUserInRole(String role)
Retorna true ou false se o usário possui ou não a Role.
Principal getUserPrincipal()
Retorna o nome do usuário autenticado, pode ser injetado com CDI ex:
@Inject
private Principal principal;
principal.getName();
Com poucas configurações você já consegue definir permissão de acesso aos seus métodos de negócio, pode na view definir a exibição dos componentes HTML baseado nas Roles que determinado usuário possui e muitas outras abordagens, em alguns casos precisamos ter mais flexibilidade com o controle de acesso mas nada impede que utilizemos um módulo de autenticação em um projeto a parte com um SSO(Single sign-on).
abaixo alguns links que tenho em meus favoritos e que seguido recorro a eles, espero que eu tenha ajudado a esclarecer suas dúvidas, grande abraço.
https://docs.oracle.com/javase/8/docs/technotes/guides/security/jaas/JAASRefGuide.html
https://docs.oracle.com/javase/8/docs/technotes/guides/security/jaas/JAASLMDevGuide.html
https://docs.oracle.com/javase/8/docs/technotes/guides/security/spec/security-specTOC.fm.html
https://access.redhat.com/documentation/en-US/JBoss_Enterprise_Application_Platform/6.1/html/Security_Guide/About_Java_Authentication_and_Authorization_Service_JAAS1.html