urinaner / sejong-dibb

3 stars 0 forks source link

도커 로그인 실패 #112

Open pillow12360 opened 10 hours ago

pillow12360 commented 10 hours ago

👄 참고 사항

Spring Security 비밀번호 인코딩 관련 401 인증 오류

🤷 버그 내용

Spring Security에서 관리자 로그인 시도 시 401 인증 오류가 발생하는 문제가 있습니다. 이는 데이터베이스에 저장된 비밀번호가 BCrypt로 인코딩되지 않은 평문 상태이기 때문입니다.

⚠ 버그 재현 방법

  1. 관리자 계정으로 로그인 시도 (login_id: 'admin', password: '1234'), ( admin01, password123 )
  2. 서버에서 401 Unauthorized 에러 응답 수신
  3. 서버 로그에서 다음 경고 메시지 확인:
    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');
image

Swagger

image

📸 스크린샷

더미 데이터 기준으로 로그인 시도 시 에러 발생

image

👄 참고 사항 (예상)

원인

해결 방안

  1. 데이터베이스 비밀번호 업데이트

    -- BCrypt로 인코딩된 비밀번호로 업데이트
    UPDATE admin 
    SET password = '$2a$10$PrI5Gk9L.tSZiW9FXhTS8O8Mz9E97k2FZbFvGFFaSsiTUIl.TCrFu'
    WHERE login_id = 'admin';
  2. Spring Security 설정 확인

    @Configuration
    @EnableWebSecurity
    public class SecurityConfig {
    
    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
    }

조치 사항

  1. SecurityConfig에서 BCryptPasswordEncoder 설정 확인
  2. 기존 DB의 비밀번호를 BCrypt로 인코딩된 값으로 업데이트
  3. 새로운 관리자 계정 생성 시 BCryptPasswordEncoder를 통한 비밀번호 인코딩 프로세스 구현