Можно ли настроить адаптер Keycloak Spring Boot таким образом, чтобы он заполнял пользовательскую учетную запись даже при запросах, не требующих авторизации? - PullRequest
0 голосов
/ 03 марта 2020

Если у меня есть конечная точка, которая должна быть общедоступной, но ведет себя иначе, если вы вошли в систему, я не могу указать ее в разделе security-constraints конфигурации моего приложения (в противном случае, если я не вошел в систему, я могу не достичь конечной точки вообще). Но без указания там, пользовательский субъект никогда не заполняется по запросу, даже если в заголовке авторизации указан допустимый токен Bearer.

Есть ли способ получить желаемое поведение с помощью basi c Адаптер Spring Boot? Если нет, то мне больше повезет с адаптером Spring Security?

1 Ответ

0 голосов
/ 04 марта 2020

Решением этой проблемы является включение упреждающей аутентификации в контексте Tomcat. Предполагая, что вы развертываете с использованием встроенного сервера, вы можете реализовать WebServerFactoryCustomizer следующим образом:

import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.stereotype.Component;

@Component
public class PreemptiveAuthWebServerCustomizer implements WebServerFactoryCustomizer<TomcatServletWebServerFactory>
{
    @Override
    public void customize( final TomcatServletWebServerFactory factory )
    {
        factory.addContextCustomizers( context -> context.setPreemptiveAuthentication( true ) );
    }
}    

Теперь, если запрос имеет отправленный заголовок авторизации, он всегда будет обрабатываться, даже если запрос не ' t явно позади пути, который требует авторизации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...