В приложении Spring Security / Boot я настроил базовую аутентификацию для определенного шаблона URL:
http.antMatcher(StringUtils.join("myURL", "/**")).authorizeRequests().anyRequest().authenticated().and().httpBasic().realmName("realmName");
Это работает как чудо, поскольку, когда я запрашиваю URL этого шаблона, мне предлагаетсябраузером, чтобы предоставить учетные данные, и после этого я могу получить доступ к этой конечной точке.Однако после успешной авторизации для этой конечной точки браузер отправляет заголовок авторизации с маркером «Basic ...» даже для запросов на URL-адреса, которые не имеют ничего общего с настроенным в приведенном выше коде.Например, домашняя страница сайта.
Это вызывает срабатывание других механизмов авторизации веб-приложения, а именно keycloak, поскольку они ожидают допустимые токены внутри заголовка Authorization.Я знаю, что могу настроить keycloak таким образом, чтобы он не пытался интерпретировать заголовок авторизации, начинающийся с «Basic», но кажется, что основной причиной этой дилеммы является то, что заголовок get отправляется на запросы, которые непринадлежат к основному auth URL.
Есть ли способ сообщить Spring Security / браузеру / кому бы то ни было, что заголовок авторизации basic-auth следует включать в запрос только в том случае, если запрос относится к URL-адресу, совпадающему с шаблоном, которым был http-basicнастроен для?Разве это не должно быть стандартным поведением?
Примеры URL:
- localhost: 8083 / myURL : я ожидаю, что браузер отправит заголовок аутентификации
- localhost: 8083 / myURL / moreURL : я также ожидаю, что браузер отправит заголовок аутентификации
- localhost: 8083 / someOtherURL : я не ожидаюбраузер для отправки заголовка аутентификации, , но он делает!
- localhost: 8083 / someOtherURL / moreURL : То же самое, браузер неожиданно отправляет заголовок