56 lines
2 KiB
Kotlin
56 lines
2 KiB
Kotlin
package fr.teamflash.fencerjudgeback.config
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired
|
|
import org.springframework.context.annotation.Bean
|
|
import org.springframework.context.annotation.Configuration
|
|
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder
|
|
import org.springframework.security.config.annotation.web.builders.HttpSecurity
|
|
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity
|
|
import org.springframework.security.core.userdetails.User
|
|
import org.springframework.security.core.userdetails.UserDetailsService
|
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
|
|
import org.springframework.security.provisioning.InMemoryUserDetailsManager
|
|
import org.springframework.security.web.SecurityFilterChain
|
|
|
|
@Configuration
|
|
@EnableWebSecurity
|
|
class SecurityConfig {
|
|
|
|
@Autowired
|
|
open fun configureGlobal(auth: AuthenticationManagerBuilder) {
|
|
val encoder = BCryptPasswordEncoder()
|
|
|
|
//Créer des utilisateurs fixes
|
|
auth.inMemoryAuthentication()
|
|
.passwordEncoder(encoder)
|
|
.withUser("aaa")
|
|
.password(encoder.encode("bbb"))
|
|
.roles("USER")
|
|
.and()
|
|
.withUser("Admin")
|
|
.password(encoder.encode("Admin"))
|
|
.roles("ADMIN")
|
|
}
|
|
|
|
@Bean
|
|
open fun securityFilterChain(http: HttpSecurity): SecurityFilterChain {
|
|
http.authorizeHttpRequests { authorize ->
|
|
authorize.requestMatchers("/ws/*").authenticated()
|
|
.anyRequest().permitAll()
|
|
}
|
|
.httpBasic { }
|
|
.formLogin { }
|
|
.csrf { it.disable() }
|
|
return http.build()
|
|
}
|
|
|
|
@Bean
|
|
fun userDetailsService(): UserDetailsService {
|
|
val user = User.withUsername("user")
|
|
.password("{noop}password") // {noop} = pas de hash pour dev
|
|
.roles("USER")
|
|
.build()
|
|
|
|
return InMemoryUserDetailsManager(user)
|
|
}
|
|
}
|