12.4. Serviços do Aplicativo JAX-RS

12.4.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 12.1. Habilitação de Segurança baseada na Função para um Serviço da Web RESTEasy JAX-RS

  1. Abra o arquivo web.xml para o aplicativo num editor de texto.
  2. 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>
    
    
  3. 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>
        
    
    
    
    
  4. 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 12.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>