티스토리 뷰
Spring boot : 3.1
Spring Security6
Kotlin
Spring security의 방식에 대해선 다루지않고, 어떻게 작성했는지를 다루도록 하려한다.
1. Build.gradle.kts
dependencies {
//spring-secutiry (보안)
implementation("org.springframework.boot:spring-boot-starter-security")
}
의존성 추가를해주고
2.SecurityConfig.kt - FilterChain
@Bean
@Throws(Exception::class)
fun filterChain(http:HttpSecurity) : SecurityFilterChain{
return http.csrf {
obj: CsrfConfigurer<HttpSecurity> -> obj.disable()
}.sessionManagement {
it.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
}.formLogin {
it.loginPage("/login").permitAll() //이친구가 없으면 시큐리티 기본 login페이지가 로딩된다.-> 만들어놓은 js,html 작동을 안한다
.usernameParameter("userid")
.passwordParameter("userpw")
.loginProcessingUrl("/login-security-try").permitAll() //시큐리티를 이용한 로그인 할 uri
.successHandler(authenticationSuccessHandler())
.failureHandler(authenticationFailureHandler())
.permitAll()
}.authorizeHttpRequests {
it.anyRequest().permitAll()
}.logout {
it.logoutUrl("/logout").permitAll()
.logoutSuccessUrl("/login").permitAll()
.invalidateHttpSession(true)
.deleteCookies("SESSION", "JSESSIONID", "XSRF-TOKEN")
}.sessionManagement {
it.sessionCreationPolicy(SessionCreationPolicy.ALWAYS)
.invalidSessionUrl("/login")
.maximumSessions(2)
.maxSessionsPreventsLogin(false)
.expiredUrl("/login")
}.httpBasic { obj: HttpBasicConfigurer<HttpSecurity> -> obj.disable() }
.build()
}
1) csft토큰은 당장은 disable시키고 나중에 적용하려한다.
2)SessionManagement : SessionCreationPolicy.STATELSEE : JWT토큰을 사용하기 위해 세션생성X
3) FormLogin :
loginPage("/login") -> 없다면 시큐리티의 기본 login페이지가 로딩된다.
username/passwordParameter : form을 submit할때 어떤 파라미터로 받을지 설정
loginProcessingUrl : js에서 form을 submit할때 정보를 넘길 url설정
Handler : 성공/실패 핸들러를 설정
직접 Provider / Success / Failuer handler를 작성했다.
// 성공 핸들러 함수
private fun authenticationSuccessHandler(): AuthenticationSuccessHandler {
return EkeprlSuccessHandler()
}
// 실패 핸들러 함수
private fun authenticationFailureHandler(): AuthenticationFailureHandler {
return EkeprlFailuerHandler()
}
//provider
@Bean
fun customAuthenticationProvider(): AuthenticationProvider {
return CustomAuthenticationProvider()
}
직접 작성한 Provider / Handler는 이어서 2편에서 작성하도록 하겠다.
반응형
'Spring > Security' 카테고리의 다른 글
Spring Security (6) : BCryptPasswordEncoder 로그인 (2) | 2025.03.05 |
---|---|
Spring Security (5) : 비밀번호 암호화 저장 (0) | 2025.03.05 |
Spring Security (4) : session 값 저장 (0) | 2025.01.16 |
Spring Security (3) (0) | 2024.10.14 |