Переопределить базовую аутентификацию Tomcat

Я пытаюсь написать веб-программу установки для моего веб-приложения (главным образом, настройку базы данных). Но поскольку я использую DIGEST-аутентификацию для всех сервлетов, у меня возникла проблема. Я хочу иметь возможность попросить пользователя ввести свой пароль MySQL, но он не может, потому что он не может войти. Поскольку пользователи сохраняются в базе данных, которой на тот момент не существует, войти в систему невозможно.

<security-constraint>
<web-resource-collection>
  <web-resource-name>Wildcard means whole app requires authentication</web-resource-name>
  <url-pattern>/*</url-pattern>
  <http-method>GET</http-method>
  <http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
  <role-name>crm_user</role-name>
</auth-constraint>
<user-data-constraint>
  <transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
 </security-constraint>
<login-config>
<auth-method>DIGEST</auth-method>
<realm-name>tomcat_realm</realm-name>
 </login-config>

Могу ли я переопределить конфигурацию входа для одного сервлета, чтобы пользователю не приходилось вводить пароль?

1 ответ

Решение

Обратите внимание, что вы указываете <url-pattern>/*</url-pattern>, Вы можете использовать этот шаблон, чтобы применить ограничение безопасности только к тем URL-адресам, для которых требуется аутентификация. На любой URL, не соответствующий этому шаблону, не будет применено это ограничение безопасности.

Вы также можете добавить второе ограничение безопасности с URL-шаблоном, который соответствует URL-адресам, которые вы не хотите защищать. В этом случае полностью исключите тег auth-constraint, чтобы каждый мог получить доступ к этим URL-адресам. Посмотрите на этот другой вопрос для примера.

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