Service에서 passwrodEncoding 부분 추가, DB에서 암호화된 패스워드로 저장되도록 함.
보호자 update 시 비밀번호 변경 가능하도록 수정
보호자 entity에서 비밀번호 필드 설정
모든 endpoint에 대해서 인증을 걸쳐야하며, 세부적인 Role에 대한 확인은 @PreAuth 어노테이션을 활용해서 진행할 수 있도록 구상 (개발자의 실수로 민감한 영역에 조회될 수 있으므로)
보호자 로그인
실질적인 처리 과정에 들어가는 컨트롤러와 서비스는 해당 도메인 내부에 구현
보호자 로그인 시 jwt 동작 확인
header로 token 주고 받으면서 진행
요양보호사 로그인, 회원가입 부분은 상세 테스트 아직 안되었습니다!
TODO : 앞에 bearer 구분자 필요 (oauth2 연동 대비 권장사항?)
TODO : 토큰 갱신 기능 필요 (reissue)
TODO : 토큰 만료 정책 + 토큰 만료 확인 필요
TODO : ADMIN에 대한 도메인 필요
TODO : hasRole 기능에 대한 자세한 조사 필요
현재 혜연님의 도움으로 (압도적 감사) hasAnyAuth... 를 통해서만 권한 검사가 정상 동작함을 확인하였습니다.
어디선가 문제가 있는 것 같은데 이부분은 추후 수정해야할 것 같습니다.
TODO : 보호자 조회에 대해서 자세한 필터링 필요
만약 보호자가 자신의 정보를 수정하려면, 권한이 GUARDIAN이면서 자신의 ID에만 수정이 가능하도록 검사가 필요하다고 생각됩니다.
⭐ 리뷰 요구 사항
대략적인 시큐리티 필터 동작 방식은 다음과 같습니다.
외부에서 들어온 요청이 시큐리티 필터로 먼저 접근하게 됩니다.
security config를 보면, authorizeHttpRequests에 의해서 허용된 도메인은 인증없이 통과하게 됩니다.
그외 request는 인증을 요구하게 됩니다. ( 보안과 관련된 부분이라 예외적으로 발생할 수 있는 모든 접근에 대해서 일단 보수적으로 차단하는 전략을 취하고자 합니다. )
인증은 요청의 header에 key : value 로 전달된 값을 JwtFilter 에서 처리하게 되며, 이때 jwtProvider가 주입받게 됩니다.
JwtFilter 내에서는 jwtProvider를 통해서 jwt를 검증하고 검증 성공 시 security context에 해당 user를 등록하게 됩니다. 이때 stateless 서버이므로 한번의 요청에 대해서 임시적인 세션이 생성되고, 처리가 끝나고 security context는 다시 clear 상태로 돌아가게 됩니다.
jwtProvider에서는 jwt를 디코딩해서 BaseUserDetailsService로 사용자가 존재하는지에 대한처리를 사용자 이름과 Role을 넘기게 됩니다.
BaseUserDetailsService에서는 DB에 접근하여 값을 검증하고 처리를 진행하게 됩니다.
대략적인 흐름은 위와 같도록 설계 하였는데, 설명이 조금 부족할 수 있습니다...
방금 막 오류 해결을 완료해서 조금 부족한 부분이 많을 수 있습니다.
Guardian 권한에 대한 검사부분을 중점적으로 리뷰 부탁드려용 careworker나 admin에 대해서는 추후 다시한번 리뷰 올리겠습니다.
🔥 관련 이슈
close: #10
📝 작업 상세 설명
TODO : 앞에 bearer 구분자 필요 (oauth2 연동 대비 권장사항?) TODO : 토큰 갱신 기능 필요 (reissue) TODO : 토큰 만료 정책 + 토큰 만료 확인 필요 TODO : ADMIN에 대한 도메인 필요
TODO : hasRole 기능에 대한 자세한 조사 필요
TODO : 보호자 조회에 대해서 자세한 필터링 필요 만약 보호자가 자신의 정보를 수정하려면, 권한이 GUARDIAN이면서 자신의 ID에만 수정이 가능하도록 검사가 필요하다고 생각됩니다.
⭐ 리뷰 요구 사항
대략적인 시큐리티 필터 동작 방식은 다음과 같습니다.
외부에서 들어온 요청이 시큐리티 필터로 먼저 접근하게 됩니다.
security config를 보면, authorizeHttpRequests에 의해서 허용된 도메인은 인증없이 통과하게 됩니다.
그외 request는 인증을 요구하게 됩니다. ( 보안과 관련된 부분이라 예외적으로 발생할 수 있는 모든 접근에 대해서 일단 보수적으로 차단하는 전략을 취하고자 합니다. )
인증은 요청의 header에 key : value 로 전달된 값을 JwtFilter 에서 처리하게 되며, 이때 jwtProvider가 주입받게 됩니다.
JwtFilter 내에서는 jwtProvider를 통해서 jwt를 검증하고 검증 성공 시 security context에 해당 user를 등록하게 됩니다. 이때 stateless 서버이므로 한번의 요청에 대해서 임시적인 세션이 생성되고, 처리가 끝나고 security context는 다시 clear 상태로 돌아가게 됩니다.
jwtProvider에서는 jwt를 디코딩해서 BaseUserDetailsService로 사용자가 존재하는지에 대한처리를 사용자 이름과 Role을 넘기게 됩니다.
BaseUserDetailsService에서는 DB에 접근하여 값을 검증하고 처리를 진행하게 됩니다.
대략적인 흐름은 위와 같도록 설계 하였는데, 설명이 조금 부족할 수 있습니다...
방금 막 오류 해결을 완료해서 조금 부족한 부분이 많을 수 있습니다.