-
Notifications
You must be signed in to change notification settings - Fork 563
Closed
Description
I tried @PreAuthorize to secure the path for Speedboat and it does not work.
interface SpeedboatRepository : PagingAndSortingRepository<Speedboat, Int> {
@PreAuthorize("hasRole('ADMIN')")
override fun findById(id: Int): Optional<Speedboat>
}
Procedure:
GET locahost:8080/api/v1/speedboats/1 without authorization
Expected result: 401
Actual result: 200 with body
This is my security configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
class AppWebSecurityConfigurerAdapter(
private val passwordEncoder: PasswordEncoder,
private val appUserDetailsService: AppUserDetailsService,
private val jwtConfiguration: JwtConfiguration,
private val secretKey: SecretKey,
private val repository: MemberRepository
) : WebSecurityConfigurerAdapter() {
override fun configure(http: HttpSecurity) {
http {
csrf {
disable()
}
sessionManagement {
sessionCreationPolicy = SessionCreationPolicy.STATELESS
}
addFilterAt<UsernamePasswordAuthenticationFilter>(
JwtUsernameAndPasswordAuthenticationFilter(
authenticationManager(),
jwtConfiguration,
secretKey,
repository
)
)
addFilterAfter<JwtUsernameAndPasswordAuthenticationFilter>(JwtTokenVerifier(jwtConfiguration, secretKey))
authorizeRequests {
authorize(anyRequest, permitAll)
}
}
}
override fun configure(auth: AuthenticationManagerBuilder) {
auth.authenticationProvider(daoAuthenticationProvider())
}
@Bean
fun daoAuthenticationProvider() =
DaoAuthenticationProvider().apply {
setPasswordEncoder(passwordEncoder)
setUserDetailsService(letsWakesurfUserDetailsService)
}
}
Metadata
Metadata
Assignees
Labels
No labels