junyong1111/Spring_Project

스프링 시큐리티 비밀번호 없이 로그인 되는 버그 발생

Closed this issue · 1 comments

🐞 버그 리포트

문제 설명

중복없는 Username만 동일하다면 비밀번호에 상관없이 로그인 되는 오류 발생

재현 과정

  1. 회원 가입 후 로그인
  2. username만 제대로 입력 후 로그인 진행
  3. 인증 오류 없이 로그인 성공 오류 발생

예상되는 정상적인 결과

💡username이 동일하더라도 비밀번호가 틀리면 인증 오류가 발생해야 함

스크린샷 및 로그

🖼️ 스크린샷 / 📜 로그 파일

환경 설정

🔧 예: Windows 10, Chrome 버전 88.0

기타 정보

스프링 시큐리티에서 관리하는 aManager를 통해 비밀번호도 검사하는 로직 누락으로 인한 오류였으며 해당 로직을 추가하여 해결

@Test
    void 로그인_테스트(){

        try {
            uService.create(username, username, password);
            System.out.println("회원가입 완료");
        } catch (Exception e) {
            System.out.println("회원가입 실패~!");
            System.out.println(e.getMessage());
        }
        try {
            UsernamePasswordAuthenticationToken authToke = 
                new UsernamePasswordAuthenticationToken(testUsername, testPassword);
            aManager.authenticate(authToke);
            
            uService.loadUserByUsername(testUsername);
            System.out.println("로그인 성공");
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

비밀번호를 확인하는 과정에서 AuthenticationManager가 자동으로 locadUsername을 호출하기 때문에

UsernamePasswordAuthenticationToken authToke = 
                new UsernamePasswordAuthenticationToken(testUsername, testPassword);
            aManager.authenticate(authToke);

위 과정만 진행해도 된다.