Аутентификация Spring Security Filters

Я относительно новичок в Srping Security Framework. В период обучения я пытался реализовать базовую функцию безопасности аутентификации для частной конечной точки API./private/**. Приложение также содержит общедоступный API/public/**где не применяются фильтры и доступно для всех. Мой код представлен ниже:

Сотрудник.kt

      data class Employee(val name: String, val age: Int)

SpringConfig.kt

      @Configuration
@EnableWebSecurity
class SecurityConfig {

    @Bean
    fun securityFilterChain(http: HttpSecurity) : SecurityFilterChain? {
        http
            .authorizeHttpRequests { authz ->
                authz
                    .antMatchers("/private/**").authenticated()
            }
            .formLogin(withDefaults())
        return http.build()
    }

    @Bean
    fun users(): InMemoryUserDetailsManager {
        return InMemoryUserDetailsManager(
            User.withUsername("john")
                .password("{noop}password")
                .authorities("read")
                .build()
        )
    }
}

Конечные точки: PublicEmployee.kt

      @RestController
@RequestMapping("/public")
class PublicEmployeeResource {

    @GetMapping("/employee")
    fun getEmployee(): ResponseEntity<Employee> {
        val employee =  Employee(name="John", age=42)
        return ResponseEntity.ok(employee)
    }
}

PrivateEmployee.kt

      @RestController
@RequestMapping("/private")
class PrivateEmployeeResource {

    @GetMapping("/employee")
    fun getEmployee(principal: Principal): ResponseEntity<Employee> {
        val employee =  Employee(name="John", age=42)
        println("Principal is ${principal}")
        return ResponseEntity.ok(employee)
    }

}

Когда я использую.formLogin(withDefaults())для аутентификации я получаю изображение ниже, и я могу передать пользователя и пароль, как указаноInMemoryUserDetailsManager.

Однако, если я изменю аутентификацию наhttpBasic()Я получаю ответ от объекта Employee без какой-либо аутентификации.

Не уверен, что я делаю неправильно.

Также я читал, что WebConfigurerAdapter() будет устаревшим. Как я могу настроить несколько фильтров для определенных шаблонов URL-адресов?

0 ответов

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