• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

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해야 하는건지 아니면 다른 문제가 있는건가요?

답변 5

·

답변을 작성해보세요.

0

heejoonk5님의 프로필

heejoonk5

질문자

2024.03.15

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

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

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

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

 

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

0

heejoonk5님의 프로필

heejoonk5

질문자

2024.03.15

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

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

 

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

0

heejoonk5님의 프로필

heejoonk5

질문자

2024.03.14

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

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

0

heejoonk5님의 프로필

heejoonk5

질문자

2024.03.14

인코딩 결과와

저장된 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);