[Section 4] JWT 인증(Authentication)

현이·2023년 5월 18일
0

백엔드 부트캠프 TIL

목록 보기
32/37
post-thumbnail

헬스하고 집 가는 길에 너무 예뻤던 하늘!
JWT 더 어렵다...



  • Spring Security 기본 폼 로그인 인증 방식은 Stateful 유지하므로 RESP API 이용한 CSR방식의 백엔드에는 부적합
  • JWT: REST API 통신 사용하는 백엔드 서버 사용에 적합



JWT(JSON Web Token)

토큰기반 인증 사용 이유

  • 세션기반 인증: 서버 or DB에 유저 정보 담는 방식 -> 매번 가져오는건 비효율적 -> 이 부담을 클라이언트에게 넘겨주기!
  • 유저 정보 암호화한 상태로 토큰에 담으므로 클라이언트에 담아도 ㄱㅊ
  • JWT : JSON Web Token, Json 포맷으로 사용자 속성 저장하는 웹 토큰

JWT의 구조

aaaaaa.bbbbbb.ccccccc

  1. Header(a)
  • 토큰 종류, 암호화하는 알고리즘
  • JSON 형태로
  1. Payload(b)
  • 유저의 정보(필요한 데이터), 권한
  • 암호화되어있음(그래도 민감한건 넣지 말기)
  1. Signature(c)
  • Header, Payload를 base64로 인코딩한 값에 salt값 추가한 값

토큰기반 인증 절차

  • 클라이언트가 서버에 ID&PW 담아서 로그인 요청 보냄 -> 서버 : 아이디/비번 일치 확인 후 클라이언트에게 보낼 암호화된 토큰 하나 생성(JWT토큰 생성)해서 보내기 -> 클라이언트: 토큰 저장 -> 클라이언트 : HTTP Headers에 토큰 담아서 서버에 요청(GET 요청 같이 보냄) -> 서버 : 토큰 해독 후 맞으면, 클라이언트가 보낸 요청 처리 후 응답 보내줌

토큰기반 인증 장점

  • 무상태성 & 확장성 (Statelessness & Scalability)
  • 안정성
  • 어디서나 생성 가능(토큰을 생성하는 서버가 꼭 토큰 안만들어도됨)
  • 권한 부여에 용이

0개의 댓글