2013-02-22 1 views
33

Моя web.xml выглядит следующим образом:Как исключить один из URL авторизации

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>app</web-resource-name> 
     <url-pattern>/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>Role</role-name> 
    </auth-constraint> 
</security-constraint> 

это защитить каждую сторону от разрешения, но я хочу исключить/информацию. Это возможно ?

ответ

57

<auth-constraint> Опустим элемент <security-constraint> для ресурсов, которые вам не нужны аутентификации, как:

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>app</web-resource-name> 
     <url-pattern>/info</url-pattern> 
    </web-resource-collection> 
    <!-- OMIT auth-constraint --> 
</security-constraint> 

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>app</web-resource-name> 
     <url-pattern>/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>Role</role-name> 
    </auth-constraint> 
</security-constraint> 
+0

Я пробовал этот подход и не работал. Действительно ли это? – cherry

+3

/path не работает для меня, а /path/* работает для всех файлов, помещенных под/путь. Кроме того, /path/myfile.xhtml работает для отдельного файла, но /path/*. Xhtml не работает –

0

Решение состоит в том, чтобы использовать альтернативную структуру безопасности, как Apache Shiro вместо безопасности на основе контейнера. Тогда легко исключить ресурс из защищенного контента. Использование Shiro Вы поместили бы в WEB-INF/shiro.ini:

[urls] 
/info = anon 
/** = authc 
0

Я не знаю, могу ли я получить вам право! Имея мои ограниченные знания, я думаю, что для обеспечения безопасности защищаемый контент объявляется с использованием одного или нескольких элементов коллекции веб-ресурсов. Каждый элемент коллекции веб-ресурсов содержит необязательную серию элементов шаблона url, за которыми следует необязательная серия элементов http-метода. Значение элемента url-pattern указывает шаблон URL, по которому URL-адрес запроса должен соответствовать запросу, чтобы соответствовать попытке доступа к защищенному контенту. Значение элемента http-метода указывает тип HTTP-запроса для разрешения.

<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> 

URL-адрес, расположенный под веб-приложением/ограниченным путем, требует роли AuthorizedUser.

0

Я попытался выше способом объяснена @ user517491, но мой кот 7 фильтров всех движений в/с по протоколу HTTPS, но предыдущее исключение игнорируется ...

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>app1</web-resource-name> 
     <url-pattern>/webservice/*</url-pattern> 
    </web-resource-collection> 
</security-constraint> 

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>Protected Context</web-resource-name> 
     <url-pattern>/*</url-pattern> 
    </web-resource-collection> 
    <user-data-constraint> 
     <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
    </user-data-constraint> 
</security-constraint> 

Как я могу добавить исключение пойти с http и всем другим трафиком с https ???

 Смежные вопросы

  • Нет связанных вопросов^_^