1.6. Restrições de Segurança do Conteúdo da Web
A segurança é definida pelas funções que permitem o acesso ao conteúdo por um padrão de URL que identifica o conteúdo protegido num aplicativo da web. Este conjunto de informação é declarado pelo uso do elemento
web.xml security-constraint.

Figura 1.6. elemento <security-constraint>
O conteúdo a ser protegido é declarado usando um ou mais elementos <web-resource-collection>. Cada elemento <web-resource-collection> contém uma série opcional de elementos <url-pattern> seguidos por uma série de elementos <http-method>. O valor do elemento <url-pattern> especifica um URL padrão relacionado que solicita a combinação de um URL para que a solicitação corresponda a uma tentativa de acesso ao conteúdo protegido. O valor do elemento <http-method> especifica um tipo de solicitação HTTP para permissão.
O elemento <user-data-constraint> opcional especifica as solicitações para a camada de transporte do cliente à conexão do servidor. A solicitação pode ser para a integridade do conteúdo (prevenindo as violações de dados no processo de comunicação) ou para confidencialidade (prevenindo a leitura enquanto em trânsito). O valor do elemento <transport-guarantee> especifica o grau pelo qual a comunicação entre o cliente e o servidor deve ser protegida. Os valores dos mesmos são
NONE, INTEGRAL e CONFIDENTIAL. O valor NONE significa que o aplicativo não requer quaisquer garantias de transporte. O valor INTEGRAL significa que o aplicativo requer que os dados sejam enviados entre o cliente e o servidor a ser enviado de tal maneira, sendo que eles não possam ser alterados em trânsito. O valor CONFIDENTIAL significa que o aplicativo requer que os dados sejam transmitidos de maneira que previnam outras entidades de observar os conteúdos de transmissão. Na maioria dos casos, a presença do aviso INTEGRAL ou CONFIDENTIAL indica que o uso do SSL é requerido.
O elemento <login-config> opcional é usado para configurar o método de autenticação que deve ser usado, o nome realm que deve ser usado pelo aplicativo e os atributos que são necessários pelo mecanismo de logon do formulário.

Figura 1.7. elemento <login-config>
O elemento <auth-method> filho especifica o mecanismo de autenticação pelo aplicativo da web. O usuário deve realizar a autenticação usando o mecanismo configurado, como pré-requisito para ganho de acesso a quaisquer recursos da web que são protegidos por uma restrição de autorização. Os valores <auth-method> legais são
BASIC, DIGEST, FORM e CLIENT-CERT. O elemento filho <realm-name> especifica o nome realm para uso no HTTP básico e autorização de resumo. O elemento filho <form-login-config> especifica o logon assim como as páginas de erro que devem ser usadas no logon baseado no formulário. O form-login-config e seus elementos filhos são ignorados, caso o valor <auth-method> não seja FORM.
O Exemplo 1.6, “fragmento do descritor web.xml” indica que qualquer URL sob o caminho
/restricted do aplicativo da web requer uma função AuthorizedUser. Não existe garantia de transporte solicitada e método de autenticação usado para obtenção da identidade do usuário de autenticação HTTP BÁSICA.
Exemplo 1.6. fragmento do descritor web.xml
<web-app>
<!-- ... -->
<security-constraint>
<web-resource-collection>
<web-resource-name>Secure Content</web-resource-name>
<url-pattern>/restricted/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>AuthorizedUser</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<!-- ... -->
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>The Restricted Zone</realm-name>
</login-config>
<!-- ... -->
<security-role>
<description>The role required to access restricted content </description>
<role-name>AuthorizedUser</role-name>
</security-role>
</web-app>