스프링 시큐리티 비밀번호 없이 로그인 되는 버그 발생
Closed this issue · 1 comments
junyong1111 commented
🐞 버그 리포트
문제 설명
중복없는 Username만 동일하다면 비밀번호에 상관없이 로그인 되는 오류 발생
재현 과정
- 회원 가입 후 로그인
- username만 제대로 입력 후 로그인 진행
- 인증 오류 없이 로그인 성공 오류 발생
예상되는 정상적인 결과
💡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());
}
}
junyong1111 commented
비밀번호를 확인하는 과정에서 AuthenticationManager가 자동으로 locadUsername을 호출하기 때문에
UsernamePasswordAuthenticationToken authToke =
new UsernamePasswordAuthenticationToken(testUsername, testPassword);
aManager.authenticate(authToke);
위 과정만 진행해도 된다.