15.5. Serviços do Aplicativo JAX-RS
15.5.1. Habilitação de Segurança baseada na Função para um Serviço da Web RESTEasy JAX-RS
Sumário
O RestEasy suporta as anotações @RolesAllowed, @PermitAll e @DenyAll nos métodos JAX-RS. No entanto, ele não reconhece essas anotações por default. Siga essas etapas para configurar o arquivo web.xml
e habilitar a segurança baseada na função.
Atenção
Não ative a segurança baseada na função caso o aplicativo usar os EJBs. O contêiner EJB fornecerá a funcionalidade ao invés do RESTEasy.
Procedimento 15.3. Habilitação de Segurança baseada na Função para um Serviço da Web RESTEasy JAX-RS
- Abra o arquivo
web.xml
para o aplicativo num editor de texto. - Adicione o seguinte <context-param> ao arquivo com as tags
web-app
:<context-param> <param-name>resteasy.role.based.security</param-name> <param-value>true</param-value> </context-param>
- Declare todas as funções usadas com o arquivo RESTEasy JAX-RS WAR usando as tags <security-role>:
<security-role><role-name>ROLE_NAME</role-name></security-role><security-role><role-name>ROLE_NAME</role-name></security-role>
- Autorize o acesso a todos os URLs manuseados pelo período de execução JAX-RS para todas as funções:
<security-constraint><web-resource-collection><web-resource-name>Resteasy</web-resource-name><url-pattern>/PATH</url-pattern></web-resource-collection><auth-constraint><role-name>ROLE_NAME</role-name><role-name>ROLE_NAME</role-name></auth-constraint></security-constraint>
Resultado
A segurança baseada na função foi habilitada com o aplicativo, com um conjunto de funções definidas.
Exemplo 15.12. Amostra de Configuração de Segurança baseada na Função
<web-app> <context-param> <param-name>resteasy.role.based.security</param-name> <param-value>true</param-value> </context-param> <servlet-mapping> <servlet-name>Resteasy</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <security-constraint> <web-resource-collection> <web-resource-name>Resteasy</web-resource-name> <url-pattern>/security</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> <role-name>user</role-name> </auth-constraint> </security-constraint> <security-role> <role-name>admin</role-name> </security-role> <security-role> <role-name>user</role-name> </security-role> </web-app>