WARN: Encoded password does not look like BCrypt
DEBUG: Failed to authenticate since password does not match stored value
📸 스크린샷
-- 현재 DB에 저장된 관리자 계정 데이터
INSERT INTO admin (id, login_id, password, username, email, role)
VALUES (1, 'admin01', 'password123', '관리자', 'admin@example.com', 'ADMIN');
INSERT INTO admin (id, login_id, password, username, email, role)
VALUES (2, 'admin', '1234', 'admin1', 'admin12@example.com', 'ADMIN');
Swagger
📸 스크린샷
더미 데이터 기준으로 로그인 시도 시 에러 발생
👄 참고 사항 (예상)
원인
Spring Security는 기본적으로 BCryptPasswordEncoder를 사용하여 비밀번호를 암호화
현재 DB에 저장된 비밀번호는 평문 상태
로그인 시도시 BCrypt 인코딩된 비밀번호와 비교하려고 시도하여 인증 실패
해결 방안
데이터베이스 비밀번호 업데이트
-- BCrypt로 인코딩된 비밀번호로 업데이트
UPDATE admin
SET password = '$2a$10$PrI5Gk9L.tSZiW9FXhTS8O8Mz9E97k2FZbFvGFFaSsiTUIl.TCrFu'
WHERE login_id = 'admin';
Spring Security 설정 확인
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
조치 사항
SecurityConfig에서 BCryptPasswordEncoder 설정 확인
기존 DB의 비밀번호를 BCrypt로 인코딩된 값으로 업데이트
새로운 관리자 계정 생성 시 BCryptPasswordEncoder를 통한 비밀번호 인코딩 프로세스 구현
👄 참고 사항
Spring Security 비밀번호 인코딩 관련 401 인증 오류
🤷 버그 내용
Spring Security에서 관리자 로그인 시도 시 401 인증 오류가 발생하는 문제가 있습니다. 이는 데이터베이스에 저장된 비밀번호가 BCrypt로 인코딩되지 않은 평문 상태이기 때문입니다.
⚠ 버그 재현 방법
📸 스크린샷
Swagger
📸 스크린샷
더미 데이터 기준으로 로그인 시도 시 에러 발생
👄 참고 사항 (예상)
원인
해결 방안
데이터베이스 비밀번호 업데이트
Spring Security 설정 확인
조치 사항