[Start Spring Boot] Spring Security Password Encoding

·2024년 4월 10일
0

Start Spring Boot!

목록 보기
37/53
post-thumbnail

PasswordEncoder

What is?

  • Spring Security에서 제공하는 인터페이스
  • 사용자의 비밀번호를 안전하게 저장하기 위해 비밀번호를 해시하는 역할
  • 해시 함수를 사용하여 비밀번호를 인코딩
  • 일방향 해시 함수

BCryptPasswordEncoder

  • BCrypt 해시 알고리즘을 사용하여 비밀번호를 인코딩
  • 현재 가장 널리 사용되는 비밀번호 인코딩 방식 중 하나

SCryptPasswordEncoder

  • SCrypt 해시 알고리즘을 사용하여 비밀번호를 인코딩
  • 메모리 집약적인 작업을 수행
  • 높은 수준의 보안이 필요한 환경에서 사용

Pbkdf2PasswordEncoder

  • PBKDF2(Password-Based Key Derivation Function 2)를 사용하여 비밀번호를 인코딩
  • 보안 수준을 사용자 정의할 수 있어야 하는 환경에서 사용

Argon2PasswordEncoder

  • Argon2 해시 알고리즘을 사용하여 비밀번호를 인코딩
  • 메모리, CPU, 그리고 시간 비용을 조정할 수 있게 하여 다양한 환경과 공격 시나리오에서의 보안성을 강화
  • 최신 암호화 기술을 사용하여 높은 수준의 보안을 필요로 하는 환경에서 사용

NoOpPasswordEncoder

  • 비밀번호를 인코딩하지 않고 그대로 저장
  • 테스트 목적으로 제한적으로 사용
  • 실제 프로덕션 환경에서는 사용을 피해야함

StandardPasswordEncoder

  • SHA-256 해시 알고리즘을 사용하여 비밀번호를 인코딩
  • 새 시스템에서는 권장되지 않음
  • 레거시 시스템에서 사용

각각의 사용법

  • SpringSecurityConfiguration.java
    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
//        return NoOpPasswordEncoder.getInstance();
//        return Pbkdf2PasswordEncoder.defaultsForSpringSecurity_v5_5();
//        return Pbkdf2PasswordEncoder.defaultsForSpringSecurity_v5_8();
//        return SCryptPasswordEncoder.defaultsForSpringSecurity_v4_1();
//        return SCryptPasswordEncoder.defaultsForSpringSecurity_v5_8();
//        return Argon2PasswordEncoder.defaultsForSpringSecurity_v5_2();
//        return Argon2PasswordEncoder.defaultsForSpringSecurity_v5_8();
//        return new StandardPasswordEncoder();

    }
  • 다음과 같이 PasswordEncoder를 반환해서 사용한다.
profile
백엔드 개발자가 꿈인 컴공과

0개의 댓글

관련 채용 정보