Capítulo 1. Visão Geral de Proteção Declarativa do Java EE
Ao invés de incorporar a segurança em seu componente comercial, o modelo de segurança do Java EE é declarativo: você descreve as funções de segurança e permissões num descritor XML padrão. Isto isola a segurança a partir do código de nível comercial uma vez que a segurança tende mais a ser uma função de onde o componente é implantado do que um aspecto inerente de lógica comercial do componente.
Por exemplo, considere um componente de caixa eletrônico usado para acessar uma conta bancária. As solicitações de segurança, funções e permissões do componente irão variar independentemente de como você acessa a conta bancária. Como você acessa sua informação de conta pode também variar dependendo de qual banco a conta é gerenciada ou onde o caixa eletrônico está localizado.
A proteção do aplicativo Java EE é baseada na especificação das solicitações de segurança através dos descritores de implantação do Java EE padrão. Você pode proteger o acesso aos EJBs e componentes da web num aplicativo empresarial pelo uso dos descritores de implantação
ejb-jar.xml e web.xml. As seguintes seções descrevem o propósito e uso de vários elementos de segurança.
1.1. Referências de Segurança
Ambos os Enterprise Java Beans (EJBs) e servlets podem declarar um ou mais elementos <security-role-ref>. A Figura 1.1, “O elemento <security-role-ref>” descreve o elemento <security-role-ref>, seus elementos filho e atributos.

Figura 1.1. O elemento <security-role-ref>
Este elemento declara que um componente está usando o valor do atributo
role-nameType do elemento <role-name> como um argumento ao método isCallerInRole(String). Um componente pode verificar se o chamador está na função declarada pelo elemento <role-name> ou <security-role-ref>. O valor do elemento <role-name> deve conectar-se ao elemento através do elemento <role-link>. O uso típico do isCallerInRole é executar uma checagem de segurança que não pode ser definida pelo uso dos elementos <method-permissions> baseados na função.
O Exemplo 1.1, “fragmento do descritor ejb-jar.xml” descreve o uso do <security-role-ref> num arquivo
ejb-jar.xml.
Exemplo 1.1. fragmento do descritor ejb-jar.xml
<!-- A sample ejb-jar.xml fragment -->
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>ASessionBean</ejb-name>
...
<security-role-ref>
<role-name>TheRoleICheck</role-name>
<role-link>TheApplicationRole</role-link>
</security-role-ref>
</session>
</enterprise-beans>
...
</ejb-jar>
O Exemplo 1.2, “fragmento do descritor web.xml” apresenta o uso do <security-role-ref> num arquivo
web.xml.
Nota
Este fragmento é apenas uma amostra. Nas implantações, os elementos nesta seção devem conter os nomes da função e conexões relevantes à implantação EJB.
Exemplo 1.2. fragmento do descritor web.xml
<web-app>
<servlet>
<servlet-name>AServlet</servlet-name>
...
<security-role-ref>
<role-name>TheServletRole</role-name>
<role-link>TheApplicationRole</role-link>
</security-role-ref>
</servlet>
...
</web-app>