Я хотел бы, чтобы из одного веб-приложения могли быть частично открыты (или, более конкретно, не использовать аутентификацию на основе контейнера).web.xml и смешение no-auth и auth
Элементы приложения, использующие аутентификацию на основе контейнеров, проживают по адресу /
, а часть, открытая для жизни, находится по адресу /openpages
. (Да, я знаю, что это, вероятно, было проще, если бы это было наоборот, но не хочу, чтобы открыть исходный код приложения)
Это моя попытка на web.xml:
<web-app>
....
<security-constraint>
<web-resource-collection>
<web-resource-name>closedpages</web-resource-name>
<url-pattern>/</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
</web-app>
Поскольку мой URL-шаблон состояний /
и не /*
Я думаю, он должен работать. Но это не так. Независимо от того, получаю ли я доступ к http://myhost/
или http://myhost/openpages/
Я получаю запрос HTTP Authentication. Только http://myhost/
должен инициировать запрос HTTP-аутентификации.
Способ, которым я понимаю, что все, что конкретно не покрыто <security-constraint>
, открыто, не так ли? Таким образом, /openpages/
не должен использовать аутентификацию.
Подробнее: Мне не очень нравится то, что <login-config>
указан на уровне webapp, а не на уровне каждого ограничения безопасности. Наверняка это вредит гибкости?
Не могли бы вы попробовать [whitelisting] (http://stackoverflow.com/a/8071539/3080094) и использовать [пустую строку] (http://stackoverflow.com/a/36026195/3080094) для контекстного корня? – vanOekel
@vanOekel. Это решило это для меня. Особенно тот факт, что «белый список» был вариантом. Почему бы вам не сказать это как ответ, и я приму это. – peterh