인프런 커뮤니티 질문&답변

heejoonk5님의 프로필 이미지
heejoonk5

작성한 질문수

코드로 배우는 React with 스프링부트 API서버

DTO와 인증 서비스

Security 단원에서 Dto와 인증 서비스 강의 관련입니다

작성

·

376

·

수정됨

1

loadUserByUsername 메서드에서 username 으로 조회잘되고 조회된 MemberDto는 log 출력도 잘되는데 다음 단계에서 "Encoded password does not look like BCrypt" 라는 warn 과 함꼐 "Failed to process authentication request" 로 자격증명에 실패했다고 합니다.

DB의 패스워드는 암호화 되어 잘 저장된거 확인됩니다

제가 무언가를 잘못 작성한건지

파라미터로 보낸 password 는 어디서 encode해야 하는건지 아니면 다른 문제가 있는건가요?

답변 5

0

heejoonk5님의 프로필 이미지
heejoonk5
질문자

일단 발생한 오류는 해결을 하긴 햇습니다. 이유를 밝혀내진 못했는데 loadUserByUsername 에서 호출된 MemberDTO의 생성자에 전달인수의 순서가 잘못 전달되고 있었습니다. MembetDTO 의 생성자를 지우고 다시 하나씩 매개변수 추가하면서 전달값을 확인하니 이제 정상 작동 됩니다. ^^

이미 지우고 다시 작성한 거지만 아직 해결안된건 순서를 맞춰서 실행했을때도 똑같은 현상이 일어나서 좀 의아했습니다.

아뭏든 좋은 하루 되시구요 신경써 주셔서 감사합니다

구멍가게코딩단님의 프로필 이미지
구멍가게코딩단
지식공유자

아.. ㅋㅋㅋ 지금 외부에서 잠시 보고 있었는데.. 해결되셨다니 다행입니다.

 

코드가 다른 부분이 있어서 고민하고 있었습니다.

0

heejoonk5님의 프로필 이미지
heejoonk5
질문자

적어주신 경로에 프로젝트 파일을 업로드 하였습니다... 감사합니다

구멍가게코딩단님의 프로필 이미지
구멍가게코딩단
지식공유자

코드는 받고 공유는 막았습니다.

 

제가 오후에 외부 일정이 있어서 오후 늦게 댓글 남기겠습니다.

0

heejoonk5님의 프로필 이미지
heejoonk5
질문자

test코드로 인코딩한 값으로DB를 업데이트해도 같은 메세지 "Encoded password does not look like BCrypt" 나옵니다.

파라미터로 전송된 password 를 인코딩하는 별도의 설정이나 코드가 혹시 따로 있는데 제가 놓치고 있는게 있을까요?

0

heejoonk5님의 프로필 이미지
heejoonk5
질문자

인코딩 결과와

저장된 password

비교결과는 정상입니다

구멍가게코딩단님의 프로필 이미지
구멍가게코딩단
지식공유자

코드를 한번 실행해서 살펴보고 싶으니

 

https://drive.google.com/drive/folders/1ZLHRKaXx8Ou8kZNd1WE6qALxq_wJODXW?usp=drive_link

 

에 프로젝트를 올려주시면 좋겠습니다.

 

아니면 구멍가게 코딩단에 질문올리시면서 프로젝트를 첨부해 두셔도 됩니다.

0

구멍가게코딩단님의 프로필 이미지
구멍가게코딩단
지식공유자

에러 메시지 자체로 보면 패스워드 문제가 맞긴 하네요..(화면에서 짤린 부분에 인코딩된 패스워드 값이 있었을꺼 같네요)

 

우선은 현재 DB에 있는 인코딩된 값이 정상적인지 아래와 같은 코드로 확인해 주세요

boolean matchResult = passwordEncoder.matches("1111", result);

log.info(matchResult);

 

만일 틀렸다면 아래 코드의 결과로 업데이트 하신 후에 확인해 보시기 바랍니다.

String origin = "1111";

String result = passwordEncoder.encode(origin);

log.info(result);



heejoonk5님의 프로필 이미지
heejoonk5

작성한 질문수

질문하기