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();
}
- 다음과 같이 PasswordEncoder를 반환해서 사용한다.