회원기능 구현

금은체리·2023년 11월 18일
1

Spring

목록 보기
37/49

JWT 로그인 인증 처리 (Filter)

📌 Client와 Server가 JWT를 주고받는 방식은 개발자가 선택함
이전 강의에서 배웠던 방식은 JWT를 생성한 서버에서 쿠키를 직접 생성해 Client로 전달
그러면 이처럼 응답 Header에 Set-Cookie로 값이 전달됨
그럼 따로 Client에서 쿠키를 직접 쿠키 저장소에 저장하지 않아도 자동으로 해당 값이 저장됨
또한 이전 강의에서는 Client에서 따로 Headerdp JWT를 직접 담아서 보내지 않고 서버에서 Request에 담긴 쿠키 값들 중 JWT에 해당하는 값을 가져와 사용함
이번에는 Client와 Server 모두 JWT를 직접 HTTP Header에 담아서 전달받는 방식으로 구현

JWT 사용 흐름

  1. Client가 username, password로 로그인 성공 시

    1. 서버에서 "로그인 정보" ➡️ JWT로 암호화(Secret Key 사용)

    2. JWT를 Client 응답 Header에 전달

      • 응답 Header에 아래 형태로 JWT 전달
      Authorization: Bearer <JWT>
      
      ex)
      Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzcGFydGEiLCJVU0VSTkFNRSI6IuultO2DhOydtCIsIlVTRVJfUk9MRSI6IlJPTEVfVVNFUiIsIkVYUCI6MTYxODU1Mzg5OH0.9WTrWxCWx3YvaKZG14khp21fjkU1VjZV4e9VEf05Hok
    3. Client에서 JWT 저장(쿠키)

  2. Client에서 JWT 통해 인증 방법

    1. JWT를 API 요청시마다 Header에 포함
      • 예) HTTP Headers
      Content-Type: application/json
      Authorization: Bearer <JWT>
      ...
    2. Server
      1. Client가 전달한 JWT 위조 여부 검증(Secret Key 사용)
      2. JWT 유효기간이 지나지 않았는지 검증
      3. 검증 성공시,
        1. JWT ➡️ 에서 사용자 정보를 가져와 확인
          • ex) GET /api/products : JWT 보낸 사용자의 관심상품 목록 조회
profile
전 체리 알러지가 있어요!

0개의 댓글