funções dinâmicas em um servidor Java EE

Eu quero gerenciar usuário e funções em um aplicativo dedicado. Por exemplo, um usuário deste aplicativo (“customerX boss”) pode criar uma nova function “employeeX employee”. Se um funcionário acessa o servidor de aplicativos Java EE (GlassFish 3), ele deve obter a function “employeeX employee”.

Parece simples, mas não é suportado pelo Java EE, porque os grupos são mapeados para funções no momento da boot e as funções dentro do aplicativo são estáticas.

Qual é a melhor maneira de gerenciar funções de usuário em tempo de execução em um ambiente Java EE (6)?

A segurança declarativa no Java EE não é realmente adequada para tais requisitos. O problema da segurança pode ser dividido em dois:

  • autenticação
  • autorização

Eu tive uma exigência semelhante uma vez. Usamos a autenticação integrada para definir o principal e confiamos nos mecanismos de login padrão do Java EE. Mas acabamos gerenciando a parte de autorização manualmente no nível do aplicativo.

De fato, até mesmo as funções que serão carregadas e associadas ao principal ( isUserInRole para a Web e isCallerInRole para o EJB) precisam ser especificadas em web.xml ou ejb.xml que não oferece flexibilidade suficiente. Tínhamos então que carregar as funções manualmente (de acordo com o principal) do LDAP ou ActiveDirectory. Em seguida, usamos os interceptores EJB3 e o filtro Servlet para executar as verificações de segurança por nós mesmos.

No entanto, sugiro enfaticamente manter um controle de access baseado em function (RBAC) e não implementar algo mais sofisticado. Existem várias estruturas que podem ajudar a lidar com o RBAC caseiro.

Nós também vimos o JSecurity e o Acegi Security e eles pareciam interessantes.

Intereting Posts