Фильтрация запросов с учетом ограничений безопасности

У меня есть веб-приложение Java, которое использует ограничения безопасности для блокировки доступа к ресурсам. Я пытаюсь манипулировать ответом HTTP 401, когда для запросов Ajax требуется аутентификация, поэтому я создал фильтр, который отслеживает состояние HTTP в ответах и, при необходимости, изменяет его соответствующим образом.

Проблема, кажется, что если требуется аутентификация, фильтр не вызывается до тех пор, пока 401 не будет отправлен в браузер. Кажется, что ограничение безопасности предшествует фильтру в цепочке обработки запросов. Шаблон URL моего фильтра является более общим, чем любое из ограничений безопасности. Платформа - это WebSphere.

Я не могу видеть, где приоритет безопасности-ограничений и фильтров указан в спецификации Servlet 2.5. Я что-то пропустил?

1 ответ

Решение

Прежде всего, если он не указан, это означает, что он оставлен как деталь реализации контейнера.
Так что вы должны посмотреть в WebSphere в частности.
Я думаю, что то же самое произошло бы в Tomcat а также, поскольку ограничения безопасности (если я правильно помню) реализуются через Valves и так будет предшествовать коду приложения в цепочке запросов.
С моей точки зрения это имеет смысл, поскольку, если вы назначаете защиту своему контейнеру, то, если запрос достигает вашего фильтра, он должен был уже пройти механизм аутентификации вашего контейнера (моя точка зрения заключается в том, что фильтр является частью ваших ресурсов.).
В Tomcat вы решите свою проблему, заменив Filter с Valve

Другие вопросы по тегам