Princípio padrão do Glassfish 3.1 para o mapeamento de funções

Eu estou trabalhando com glassfish e jaas module.

Eu configurei meu web.xml dessa maneira.

  ALL Page for admin /*   user    BASIC file   Administrator user  

Isso significa que todos os usuários que desejam acessar meu aplicativo da web precisam ser do usuário do grupo.

Em seguida, no console glassfish, preciso marcar as opções em: Configuração -> server-config -> security -> Principal padrão para o mapeamento de funções

Minha pergunta é por que eu preciso assinalar este princípio padrão para mapeamento de funções? E como eu posso mudar meu web.xml para evitar marcá-lo?

Muito obrigado

Loic

Quando você especifica as funções e funções no web.xml está usando a segurança declarativa, que depende essencialmente do uso do JAAS para impor os requisitos de autenticação e autorização especificados declarativamente.

As funções especificadas nos descritores de implementação são meramente representações das funções usadas no aplicativo. Essas funções não precisam ser as mesmas que estão presentes no database de identidade do usuário (ou domínio de autenticação) usado em tempo de execução, e geralmente podem ser diferentes, pois o desenvolvimento do aplicativo pode ter sido realizado sem consideração aos usuários reais e grupos presentes no database de identidade do usuário.

Geralmente, é realizado um mapeamento entre as funções declarativas especificadas no web.xml e os principais ou grupos presentes no database de identidade do usuário, usando os descritores de implementação específicos do contêiner. No Glassfish 3,1, este é o arquivo glassfish-web.xml . Cada mapeamento desse tipo mapearia uma function declarativa no aplicativo, para um principal ou um grupo em um território JAAS, da seguinte maneira em glassfish-web.xml (para implementações de arquivos WAR) ou glassfish-application.xml (para EAR implementações de arquivos), ou glassfish-ejb-jar.xml (para implementações de arquivos EJB JAR):

glassfish-web.xml

    ...  user Root  Administrators   ...  

glassfish-application.xml

    ...  user Root  Administrators   ...  

glassfish-ejb-jar.xml

    ...  user Root  Administrators   ...  

Os descritores acima mapeiam um user function para um Principal com identidade individual do nome Root e para um grupo de usuários com o nome Administrators no território. Você pode omitir um desses mapeamentos e reter apenas uma function para o mapeamento principal ou uma function para mapeamento de grupo. Você também pode ter vários principais mapeados para a mesma function ou vários grupos mapeados para a mesma function ou até mesmo vários principais e grupos mapeados para a mesma function.

É importante entender o conceito de principais e grupos nas regiões do JAAS – um principal representa a identidade de um Assunto (o usuário que se conecta ao aplicativo) no sistema e pode ser uma identidade individual (um único usuário) ou um grupo identidade (um grupo de usuários). Ao mapear as funções declarativas para os principais ou grupos reais, seria possível impor regras especificadas no web.xml em qualquer database de identidade do usuário (ou seja, qualquer domínio) e ser capaz de fazer isso dinamicamente sem nenhuma alteração na base de código ; afinal de contas, essa mudança exigiria mapear novamente as funções declarativas para o novo conjunto de princípios e grupos, em um domínio possivelmente diferente. Você pode encontrar um tutorial básico sobre como a segurança do Java EE e o JAAS trabalham juntos no capítulo sobre segurança no tutorial do Java EE 6 .

O Glassfish permite um esquema de mapeamento simplificado, em que não é necessário realizar o mapeamento para todas as funções declarativas no descritor de implementação específico do contêiner (neste caso glassfish-web.xml), desde que os nomes das funções declarativas ocorram. ser semelhante aos nomes dos principais ou grupos. Este é o principal padrão para o esquema de mapeamento de funções. Parece que, no seu caso, os principais / grupos em sua região são os mesmos que os papéis declarativos especificados em web.xml e, portanto, você evitaria mapear as funções para entidades e grupos explicitamente. Em palavras mais simples, se o user da function for o mesmo que um user principal ou um user usuários em sua região JAAS (e similarmente para outras identidades), você poderá usar a function padrão para o esquema de mapeamento principal da Glassfish, sem mapear isso para cada function no seu arquivo web.xml .

Se você quiser evitar a opção de implantação do principal padrão para o mapeamento de funções, deverá fornecer o papel ao mapeamento de principal / grupo você mesmo nos descritores de implantação específicos do contêiner, como faria normalmente para outros servidores de aplicativos.

Você pode ler mais sobre esse tópico em um dos posts no blogs.oracle.com que descreve esse recurso do Glassfish .