/ / Corresponde padrão de URL do jetty apenas ao diretório raiz - aplicativos da Web, servlets, senhas, jetty, cometd

Corresponder padrão de URL do jetty apenas ao diretório raiz - aplicativos da Web, servlets, senhas, jetty, cometd

Gostaria de proteger apenas com senha o diretório raiz no meu caminho de contexto para um Jetty WebApp. Meu caminho de contexto é / MyApp, então gostaria de solicitar uma senha para acessar:

http://localhost:8080/MyApp

Mas NÃO para:

http://localhost:8080/MyApp/cometd

Minha configuração atual está abaixo (preste atenção ao padrão url):

<security-constraint>
<web-resource-collection>
<web-resource-name>Private Page</web-resource-name>
<url-pattern>/</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>moderator</role-name>
</auth-constraint>
</security-constraint>

<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Test Realm</realm-name>
</login-config>

Eu esperaria que isso funcionasse apenas pela natureza de como / e / * funcionam em geral. Eu também vi este recurso que eu acredito que está sugerindo que isso deveria funcionar: http://www.coderanch.com/t/364782/Servlets/java/there-key-difference-between-url

No entanto, para o meu caso, os padrões de URL:

<url-pattern>/</url-pattern>

e

<url-pattern>/*</url-pattern>

parecem estar agindo exatamente da mesma forma: ambos

http://localhost:8080/MyApp

e

http://localhost:8080/MyApp/cometd

são ambos protegidos por senha.

Claro, se eu mudar para / nothingishere, apenas como um teste de sanidade, nada é protegido por senha, exceto por / MyApp / nothingishere

Alguém sabe como proteger apenas o diretório raiz dos servlets da web?

Respostas:

5 para resposta № 1

Aqui está a resposta para você:

<?xml version="1.0" encoding="utf-8"?>

<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">
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>Private Page</web-resource-name>
<url-pattern>/</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>moderator</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Public page</web-resource-name>
<url-pattern>/test/*</url-pattern>
</web-resource-collection>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Test Realm</realm-name>
</login-config>
</web-app>

Nesta configuração, o diretório raiz é protegido por senha eo /test/... diretório não é. Eu acho que isso é o que você está pedindo.

Essa configuração é testada no Tomcat 7+ e em um novo projeto criado desde o início no NetBeans (posso enviar por e-mail toda a fonte, se necessário).

Esta é a saída: saída