kakao-tech-campus-2nd-step3 / Team13_BE

13조 백엔드
4 stars 5 forks source link

로그인 기능 구현 #36

Open 20jcode opened 4 days ago

20jcode commented 4 days ago

🔥 관련 이슈

close: #10

📝 작업 상세 설명

  1. 보호자 회원가입 시 password 입력 + 비밀번호 암호화 적용
  1. 보호자 로그인
  1. 요양보호사 로그인, 회원가입 부분은 상세 테스트 아직 안되었습니다!

TODO : 앞에 bearer 구분자 필요 (oauth2 연동 대비 권장사항?) TODO : 토큰 갱신 기능 필요 (reissue) TODO : 토큰 만료 정책 + 토큰 만료 확인 필요 TODO : ADMIN에 대한 도메인 필요

TODO : hasRole 기능에 대한 자세한 조사 필요

TODO : 보호자 조회에 대해서 자세한 필터링 필요 만약 보호자가 자신의 정보를 수정하려면, 권한이 GUARDIAN이면서 자신의 ID에만 수정이 가능하도록 검사가 필요하다고 생각됩니다.

⭐ 리뷰 요구 사항

대략적인 시큐리티 필터 동작 방식은 다음과 같습니다.

  1. 외부에서 들어온 요청이 시큐리티 필터로 먼저 접근하게 됩니다.

  2. security config를 보면, authorizeHttpRequests에 의해서 허용된 도메인은 인증없이 통과하게 됩니다.

  3. 그외 request는 인증을 요구하게 됩니다. ( 보안과 관련된 부분이라 예외적으로 발생할 수 있는 모든 접근에 대해서 일단 보수적으로 차단하는 전략을 취하고자 합니다. )

  4. 인증은 요청의 header에 key : value 로 전달된 값을 JwtFilter 에서 처리하게 되며, 이때 jwtProvider가 주입받게 됩니다.

  5. JwtFilter 내에서는 jwtProvider를 통해서 jwt를 검증하고 검증 성공 시 security context에 해당 user를 등록하게 됩니다. 이때 stateless 서버이므로 한번의 요청에 대해서 임시적인 세션이 생성되고, 처리가 끝나고 security context는 다시 clear 상태로 돌아가게 됩니다.

  6. jwtProvider에서는 jwt를 디코딩해서 BaseUserDetailsService로 사용자가 존재하는지에 대한처리를 사용자 이름과 Role을 넘기게 됩니다.

  7. BaseUserDetailsService에서는 DB에 접근하여 값을 검증하고 처리를 진행하게 됩니다.

대략적인 흐름은 위와 같도록 설계 하였는데, 설명이 조금 부족할 수 있습니다...

방금 막 오류 해결을 완료해서 조금 부족한 부분이 많을 수 있습니다.