-
카테고리
-
세부 분야
풀스택
-
해결 여부
미해결
Security 단원에서 Dto와 인증 서비스 강의 관련입니다
24.03.14 18:04 작성 24.03.14 18:07 수정 조회수 226
0
loadUserByUsername 메서드에서 username 으로 조회잘되고 조회된 MemberDto는 log 출력도 잘되는데 다음 단계에서 "Encoded password does not look like BCrypt" 라는 warn 과 함꼐 "Failed to process authentication request" 로 자격증명에 실패했다고 합니다.
DB의 패스워드는 암호화 되어 잘 저장된거 확인됩니다
제가 무언가를 잘못 작성한건지
파라미터로 보낸 password 는 어디서 encode해야 하는건지 아니면 다른 문제가 있는건가요?
답변을 작성해보세요.
0
heejoonk5
질문자2024.03.15
일단 발생한 오류는 해결을 하긴 햇습니다. 이유를 밝혀내진 못했는데 loadUserByUsername 에서 호출된 MemberDTO의 생성자에 전달인수의 순서가 잘못 전달되고 있었습니다. MembetDTO 의 생성자를 지우고 다시 하나씩 매개변수 추가하면서 전달값을 확인하니 이제 정상 작동 됩니다. ^^
이미 지우고 다시 작성한 거지만 아직 해결안된건 순서를 맞춰서 실행했을때도 똑같은 현상이 일어나서 좀 의아했습니다.
아뭏든 좋은 하루 되시구요 신경써 주셔서 감사합니다
0
0
heejoonk5
질문자2024.03.14
test코드로 인코딩한 값으로DB를 업데이트해도 같은 메세지 "Encoded password does not look like BCrypt" 나옵니다.
파라미터로 전송된 password 를 인코딩하는 별도의 설정이나 코드가 혹시 따로 있는데 제가 놓치고 있는게 있을까요?
0
구멍가게코딩단
지식공유자2024.03.14
코드를 한번 실행해서 살펴보고 싶으니
https://drive.google.com/drive/folders/1ZLHRKaXx8Ou8kZNd1WE6qALxq_wJODXW?usp=drive_link
에 프로젝트를 올려주시면 좋겠습니다.
아니면 구멍가게 코딩단에 질문올리시면서 프로젝트를 첨부해 두셔도 됩니다.
0
구멍가게코딩단
지식공유자2024.03.14
에러 메시지 자체로 보면 패스워드 문제가 맞긴 하네요..(화면에서 짤린 부분에 인코딩된 패스워드 값이 있었을꺼 같네요)
우선은 현재 DB에 있는 인코딩된 값이 정상적인지 아래와 같은 코드로 확인해 주세요
boolean matchResult = passwordEncoder.matches("1111", result);
log.info(matchResult);
만일 틀렸다면 아래 코드의 결과로 업데이트 하신 후에 확인해 보시기 바랍니다.
String origin = "1111";
String result = passwordEncoder.encode(origin);
log.info(result);
답변 5