[kotlin] 코틀린 스프링 보안 처리 방법
스프링은 보안 기능을 지원하여 애플리케이션의 인증, 권한 부여, 보안 설정 등을 쉽게 처리할 수 있도록 도와줍니다. 이번 글에서는 코틀린 언어를 사용하여 스프링 시큐리티를 활용한 보안 처리 방법에 대해 알아보겠습니다.
의존성 추가
먼저, build.gradle 파일에 다음과 같이 스프링 시큐리티 의존성을 추가합니다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-security'
}
보안 설정
다음으로, 보안 설정을 위해 SecurityConfig.kt 파일을 생성하고 다음과 같이 구성합니다.
import org.springframework.context.annotation.Bean
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter
import org.springframework.security.core.userdetails.User
import org.springframework.security.core.userdetails.UserDetails
import org.springframework.security.core.userdetails.UserDetailsService
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
import org.springframework.security.crypto.password.PasswordEncoder
import org.springframework.security.provisioning.InMemoryUserDetailsManager
@EnableWebSecurity
class SecurityConfig : WebSecurityConfigurerAdapter() {
override fun configure(auth: AuthenticationManagerBuilder) {
auth.userDetailsService(userDetailsService()).passwordEncoder(passwordEncoder())
}
@Bean
override fun userDetailsService(): UserDetailsService {
val user: UserDetails = User.builder()
.username("user")
.password(passwordEncoder().encode("password"))
.roles("USER")
.build()
return InMemoryUserDetailsManager(user)
}
@Bean
fun passwordEncoder(): PasswordEncoder {
return BCryptPasswordEncoder()
}
}
위 설정에서는 사용자 이름, 비밀번호 및 역할을 정의하고, 암호화를 위해 BCryptPasswordEncoder를 사용합니다.
사용자 인증
마지막으로, 사용자가 로그인을 시도할 때 보안을 처리하는 부분을 살펴보겠습니다.
@RestController
class UserController {
@GetMapping("/login")
fun login(): String {
return "Please login"
}
@GetMapping("/secure")
fun secure(): String {
return "Secure page"
}
}
위 코드에서는 /login
경로로 접속하면 “Please login” 메시지를, /secure
경로로 접속하면 “Secure page” 메시지를 반환합니다.
이제 코틀린으로 스프링 시큐리티를 활용하여 보안을 처리하는 방법에 대해 알아보았습니다.
더 자세한 내용은 스프링 시큐리티 공식 문서를 참고하시기 바랍니다.