Configurando o suporte de Java Servlet 3.1 para segurança

O Liberty suporta todas as atualizações de segurança, conforme definido na especificação Java™ Servlet 3.1

Sobre esta Tarefa

Aproveite os recursos Java Servlet 3.1 no Liberty.

Procedimento

  1. Adicionar o recurso servlet-3.1 no arquivo server.xml :
    <feature>servlet-3.1</feature>
  2. Determine qual das seguintes funções do Servlet Java 3.1 você deseja usar:
    • Especifique autocomplete=off no formulário de login.
      Ao usar HTML para uma página de login do formulário, configure o campo de formulário da senha para autocomplete="off" para desativar o preenchimento automático nas senhas no navegador da Web. Por exemplo:
      <form method="POST" action="j_security_check">
      <input type="text" name="j_username">
      <input type="password" name="j_password" autocomplete="off">
      </form>
    • Especifique todas as restrições de segurança de autenticação (**).
      O nome da função especial ** indica qualquer usuário autenticado. Quando ** é exibido em uma restrição de autorização, se o usuário for autenticado, esse usuário terá acesso aos métodos que são especificadas na restrição. Os usuários não precisam ser mapeados para esta função nas ligações do aplicativo. Por exemplo:
      <security-constraint id="SecurityConstraint_1">
      		<web-resource-collection id="WebResourceCollection_1">
      			<web-resource-name>Protected with ** role</web-resource-name>
      			<url-pattern>/AnyAuthSecurityConstraint</url-pattern>
      			<http-method>GET</http-method>
      			<http-method>POST</http-method>
      		</web-resource-collection>
      		<auth-constraint id="AuthConstraint_1">
      			<role-name>**</role-name>
      		</auth-constraint>
      </security-constraint>

      Quando o método isUserInRole() é chamado como um nome de função de **, isUserInRole() retorna true se o usuário está autenticado. Se ** for uma função definida na configuração em uma função de segurança, ele não será tratado como qualquer função especial de usuário autenticado. O usuário deve ser mapeado para essa função nas ligações de aplicativos para isUserInRole retornar true.

    • Especifique a sinalização deny-uncovered-http-methods em arquivos web.xml.
      Se o elemento deny-uncovered-http-methods estiver especificado no arquivo web.xml, o contêiner nega quaisquer métodos HTTP descobertos que não são enumerados dentro da restrição de segurança combinada para um padrão de URL que é a melhor correspondência para a solicitação de URL. Um código de status 403 (SC_FORBIDDEN) é retornado. Por exemplo:
      <servlet-mapping id="ServletMapping_1">
      		<servlet-name>MyServlet</servlet-name>
      		<url-pattern>/MyURLPattern</url-pattern>
      </servlet-mapping>
      
      <deny-uncovered-http-methods/>
      
      <!-- SECURITY CONSTRAINTS -->
      <security-constraint id="SecurityConstraint_1">
      		<web-resource-collection id="WebResourceCollection_1">
      			<web-resource-name>Protected with Employee or Manager roles</web-resource-name>
      			<url-pattern>/MyURLPattern</url-pattern>
      			<http-method>GET</http-method>
      			<http-method>POST</http-method>
      		</web-resource-collection>
      		<auth-constraint id="AuthConstraint_1">
      			<role-name>Employee</role-name>
      			<role-name>Manager</role-name>
      		</auth-constraint>
      </security-constraint>
      Se o elemento deny-uncovered-http-methods for especificado no arquivo web.xml, uma mensagem será registrada no arquivo messages.log para cada padrão de URL em cada servlet, indicando os métodos descobertos com uma nota que esses métodos descobertos estão desprotegidos e não acessíveis. Por exemplo:
      For URL MyURLPattern in servlet MyServlet, the following HTTP methods are uncovered, and not accessible: DELETE OPTIONS HEAD PUT TRACE
      Se o elemento deny-uncovered-http-methods não for especificado no arquivo web.xml, uma mensagem será registrada no arquivo messages.log para cada padrão de URL em cada servlet, indicando os métodos descobertos com uma nota que esses métodos descobertos estão desprotegidos e acessíveis. Por exemplo:
      For URL MyURLPattern in servlet MyServlet, the following HTTP methods are uncovered, and accessible: DELETE OPTIONS HEAD PUT TRACE

Resultados

Agora você assegurou o seu aplicativo.