17.5. Uso da Segurança baseada na Função nos Servlets

Para adicionar a segurança a um servlet, você precisa mapear cada servlet a um padrão de URL e criar restrições de segurança nos padrões do URL que precisam ser protegidos. As restrições de segurança limitam o acesso aos URLs e funções. A autenticação e autorização são manuseadas pelo security domain especificados no jboss-web.xml do WAR.
Pré-requisitos

Antes de você usar a segurança baseada na função num servlet, o security domain usado para autenticar e autorizar o acesso precisa ser configurado no contêiner do JBoss EAP 6.

Procedimento 17.2. Adição da Segurança baseada na Função aos Servlets

  1. Adição dos mapeamentos entre os padrões servlets e URL.

    Use os elementos <servlet-mapping> no web.xml para mapear os servlets individuais aos padrões URL. A seguinte amostra mapeia o servlet chamado DisplayOpResult ao /DisplayOpResult default de URL.
    <servlet-mapping>
        <servlet-name>DisplayOpResult</servlet-name>
        <url-pattern>/DisplayOpResult</url-pattern>
    </servlet-mapping>		
    			
    
    
  2. Adição das restrições de segurança nos padrões URL.

    Para mapear o default URL a uma restrição de segurança, use o <security-constraint>. A seguinte amostra de acesso às restrições a partir do /DisplayOpResult default de URL a ser acessado pelos principals com o eap_admin da função. A função necessita estar presente no security domain.
    <security-constraint>
    	<display-name>Restrict access to role eap_admin</display-name>
    	<web-resource-collection>
    		<web-resource-name>Restrict access to role eap_admin</web-resource-name>
    		<url-pattern>/DisplayOpResult/*</url-pattern>
    	</web-resource-collection>
    	<auth-constraint>
    		<role-name>eap_admin</role-name>
    	</auth-constraint>	
    </security-constraint>	
    
    <security-role>
      <role-name>eap_admin</role-name>
    </security-role>
    
    
    <login-config>
        <auth-method>BASIC</auth-method>
    </login-config>
    			
    
    
    Você precisa especificar o método de autenticação, que pode ser qualquer um dos seguintes: BASIC, FORM, DIGEST, CLIENT-CERT, SPNEGO. Essa amostra usa a autenticação BASIC.
  3. Especificação do security domain no jboss-web.xml do WAR.

    Adicione o security domain ao jboss-web.xml do WAR com o objetivo de conectar os servlets ao security domain configurado, que sabe como autenticar e autorizar os principals em referências de segurança. A seguinte amostra usa o security domain chamado acme_domain.
    <jboss-web>
    	...
    	<security-domain>acme_domain</security-domain>
    	...
    </jboss-web>
    			
    
    

Exemplo 17.1. Amostra web.xml com a Segurança configurada baseada na função

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">

<display-name>Use Role-Based Security In Servlets</display-name>

<welcome-file-list>
  <welcome-file>/index.jsp</welcome-file>
</welcome-file-list>

<servlet-mapping>
    <servlet-name>DisplayOpResult</servlet-name>
    <url-pattern>/DisplayOpResult</url-pattern>
</servlet-mapping>

<security-constraint>
  <display-name>Restrict access to role eap_admin</display-name>
    <web-resource-collection>
      <web-resource-name>Restrict access to role eap_admin</web-resource-name>
      <url-pattern>/DisplayOpResult/*</url-pattern>
      </web-resource-collection>
      <auth-constraint>
        <role-name>eap_admin</role-name>
      </auth-constraint>
    </security-constraint>

    <security-role>
      <role-name>eap_admin</role-name>
    </security-role>

    <login-config>
        <auth-method>BASIC</auth-method>
    </login-config>

</web-app>