[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” 메시지를 반환합니다.

이제 코틀린으로 스프링 시큐리티를 활용하여 보안을 처리하는 방법에 대해 알아보았습니다.

더 자세한 내용은 스프링 시큐리티 공식 문서를 참고하시기 바랍니다.