inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링과 JPA 기반 웹 애플리케이션 개발

로그인 로그아웃

로그인 구현 질문드립니다.

362

taehee-kim-dev

작성한 질문수 21

1

안녕하세요,

여쭈어보고 싶은게 두가지가 있습니다.

질문1.

DB의 username 컬럼에 "sampleID" 값이 있고,

password 컬럼에 "samplePassword" 값의 암호화된 값이 있을 때,

POST 요청으로 

username=sampleID&password=samplePassword

라고 요청이 들어오면,

UserDetailService 구현을 안해도 알아서 로그인처리가 되나요?

질문2.

UserDetailService에서 이메일 또는 닉네임만 확인해서 반환하고,

비밀번호 확인은 구현이 안되어있는데요,

비밀번호 확인은 어떻게 이루어지고 있는 건가요?

이미 로그인 인증은 처리 된거고, 그 이후에 이메일 또는 닉네임을 확인해서 

authentication token을 만들어서 SecurityContextHolder에 넣어주고 있는건가요??

DB의 컬럼값도 email, nickname으로 username이랑 전혀 관련 없는데,

로그인 POST 요청 시 들어오는 username과 password값으로

DB에 있는 값들과의 비교 및 로그인 인증이 어떻게 되는건지 모르겠습니다.

thymeleaf spring-boot spring JPA java

답변 4

1

taehee-kim-dev

정말정말 감사드립니다!!!!!!!!!

1

백기선

네 맞습니다. 그 방법 말고 토큰 기반의 다른 인증 방식도 있지만 가장 일반적인 유저네임/패스워드 인증 방식은 그렇게 동작합니다.

1

백기선

1. UserDetailsService는 password encoder가 아니라 sameId라는 유저아이디에 해당하는 유저 데이터를 읽어오는 역할을 하니까 당연히 있어야 합니다. 그 다음 실제 패스워드가 매치하는지는 PasswordEncoder를 사용해서 확인하기 때문에 패스워드를 저장할 때 사용한 그 PasswordEncoder를 스프링 시큐리티 설정에 추가해야 합니다.

2. 비밀번호 확인은 PasswordEncoder를 사용해서 스프링 시큐리티가 확인합니다. DB에 들어있는 email이나 nickname을 username으로 취급해서 유저를 읽어오는거구요. 그렇게 인증 처리가 되면 Authentication이라는 객체를 만들어서 SecurityContextHodler에 넣어주는 겁니다.

스프링 시큐리티 강의에서 자세히 설명하지만, 간략히 설명드리자면 로그인 시 username에 해당하는 값으로 UserDetailsService의 구현체를 사용해서 유저 데이터를 읽어옵니다. 그때 username이라는 값을 DB에 들어있는 nickname이나 email로 매치되는지 살펴보고 그에 해당하는 유저 데이터를 읽어오는 겁니다. 그 다음 그렇게 읽어온 유저 데이터에는 패스워드가 인코딩 된 값으로 들어있는데, 그 값을 스프링 시큐리티 설정에 연결해 놓은 PasswordEncoder를 사용해서 체크하는 겁니다.

0

taehee-kim-dev

답변 정말 감사드립니다.

결국 스프링 시큐리티의 로그인 인증은, UserDetailService 구현체에서 DB에서 검색해 username, password 등의 정보를 채워넣어 반환한 "스프링 시큐리티의 User객체"의 username, password 정보만 보고 인증을 진행하는게 맞나요?

Study 개설하는 로직에 대해서 궁금점이 있습니다.

0

55

1

앱 재시작 후 회원가입

0

103

1

app.host 관련 질문이 있습니다

0

97

1

강의 버전 정보

0

125

1

event, study 참조

0

219

2

비밀번호 변경 로직 질문있습니다.

0

135

1

프로필 수정 처리 merge 질문입니다.

0

107

1

회원가입 성공 후 redirect이동시 권한 질문

0

492

3

HtmlEmailService 개발하다 생긴 의문입니다

0

250

2

postgreSql 연결하여 JPA 를 통해 테이블 생성시 ZONE 테이블 생성에서 에러가 납니다

0

430

2

수업질문 [긴급] 로그인안되는 문제 말씀해주시는 부분 반영해서 최종 질문드립니다

0

260

2

[긴급-재업로드]수업질문 로그인 안 되는 문제

0

235

1

[긴급] 로그인해도 네비게이션 바가 안 바뀌고 있습니다!! 로그인이 안 됩니다 도와주세요

0

277

1

cropper 오류 문제로 질문드립니다..

0

288

2

authentication관련 질문...

0

495

2

모임참가 취소 할때 로직 질문

0

350

3

안녕하세요 기선님 질문이있습니다..

0

229

1

HTML코드 및 강의 중간자료들

0

679

3

springSecurity

0

521

2

버전 질문입니다.

0

302

1

부트스트랩, css

0

353

2

영속성 컨텍스트 질문

0

248

2

다시 강의를 보니 드는생각..

0

352

2

5:50에 나오는 HTML코드는 어디서 찾을 수 있나여?

0

313

1