Как применить роль безопасности Tomcat для всех URL, кроме одного? - PullRequest
7 голосов
/ 15 марта 2012

Мое административное веб-приложение защищено с помощью basic-auth:

<security-constraint>
  <web-resource-collection>
    <web-resource-name>myApp</web-resource-name>
    <description>
      Security constraint for
      Admin resources
    </description>
    <url-pattern>/*</url-pattern>
    <http-method>POST</http-method>
    <http-method>GET</http-method>
  </web-resource-collection>
  <auth-constraint>
    <description>
      constraint
    </description>
    <role-name>myrolename</role-name>
  </auth-constraint>
  <user-data-constraint>
    <description>SSL not required</description>
    <transport-guarantee>NONE</transport-guarantee>
  </user-data-constraint>
</security-constraint>
<login-config>
  <auth-method>BASIC</auth-method>
  <realm-name>Admin Login</realm-name>
</login-config>

Однако мне нужно установить исключение для одного URL-адреса (скажем, / check / ), используемого автоматической службой, проверяющей, регулярно ли работает веб-приложение.

К сожалению, я не могу активировать базовую аутентификацию для этой службы.

Как мне этого добиться?

Большое спасибо.

1 Ответ

7 голосов
/ 21 марта 2012

Добавление еще одного ограничения с помощью <transport-guarantee>NONE</transport-guarantee> сделало трюк

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Status page, accessed internally by application</web-resource-name>
        <url-pattern>/status/</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
</security-constraint>
...