"꾸준하고 완벽한 한 걸음"

Spring/Spring Security

개발자 유미 - 스프링 시큐리티 5. BCrypt 암호화 메소드

kimyoungrok 2025. 3. 7. 01:51
728x90

스프링 시큐리티 5 : BCrypt 암호화 메소드

 

개발자 유미 | 커뮤니티

 

개발자 유미 | 커뮤니티

 

www.devyummi.com

 


단방향 해시 암호화

로그인을 통한 사용자 인증 시 사용자의 비밀번호에 대해 단방향 해시 암호화를 진행해야 한다.

이를 통해 비밀번호의 유출로부터 안전해지고, 복호화가 불가능해 보안을 지킬 수 있다.

스프링 시큐리티는 비밀번호의 암호화를 위해 BCrypt Passwrod Encoder를 사용하는 것을 권장한다.

BCrypt Passwrod Encoder 반환 빈 등록

BCrypt Passwrod Encoder를 반환하는 메소드를 만들고, 빈으로 등록하자.

package com.example.testsecurity.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
@EnableWebSecurity
public class SecurityConfig {
    @Bean
    public BCryptPasswordEncoder bCryptPasswordEncoder(){
        return new BCryptPasswordEncoder();
    }
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
                .authorizeHttpRequests((auth)->auth
                        .requestMatchers("/", "/login").permitAll()
                        .requestMatchers("/admin").hasRole("ADMIN")
                        .requestMatchers("/my/**").hasAnyRole("ADMIN", "USER")
                        .anyRequest().authenticated()
                );
        http
                .formLogin((auth) -> auth.loginPage("/login")
                        .loginProcessingUrl("/loginProc")
                        .permitAll()
                );

        http
                .csrf((auth) -> auth.disable());
        return http.build();
    }
}
728x90