Springboot REST - предоставляет тот же сервис, что и защищенный и незащищенный - PullRequest
2 голосов
/ 08 июля 2019

Я хочу включить базовую аутентификацию для моих служб Spring https REST (в настоящее время незащищенных) в приложении Springboot. Несколько клиентов используют эти службы, в то время как некоторые могут перейти на защищенную, некоторые все еще хотят использовать незащищенную версию еще несколько месяцев. Как я могу предоставить один и тот же сервис как защищенному, так и незащищенному в одном приложении с весенней загрузкой?

Хотя я сделал это для сервисов Apache cxf REST, разместив один и тот же сервис в разных портах и ​​защитив только один порт, я не знаю, как этого добиться в Springboot.

1 Ответ

2 голосов
/ 08 июля 2019

Создать RequestMapping с двумя конечными точками, как показано ниже.Клиенты, которые хотят использовать базовую аутентификацию, будут обслуживаться с использованием /secure/** (без доступа без аутентификации) , а другие, которые собираются перейти на безопасную систему через несколько месяцев, будут обслуживаться с помощью /unsecure/** (любой может получить доступ) .Вы можете использовать RequestMapping уровня класса, чтобы избежать изменений в каждой конечной точке на уровне метода

@GetMapping(value= {"/secure/users","/unsecure/users"})
    public ResponseEntity<List<User>> findAllUsers()
    {   
        ...
    }

. Теперь настройте безопасность, как показано ниже.для этого вам нужны клиентские роли, хранящиеся в БД

@Override
    protected void configure(HttpSecurity http) throws Exception{

         http
         .csrf().disable()
         .authorizeRequests()
         .antMatchers("/unsecure/**").permitAll()
         .antMatchers("/secure/**").hasRole("CLIENT_SECURE") 
         .anyRequest().authenticated();

    }

Пример работы с Git

Защищенная конечная точка: GET http://localhost:8088/secure/users Статус 403 enter image description here

UnSecure endPoint: GET: http://localhost:8088/unsecure/users Статус 200 enter image description here

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