본문 바로가기
TIL

항해99_TIL220528 (JWT)

by Hyeongjun_Ham 2022. 5. 29.

스프링 시큐리티 이용해서 순조롭게 진행되나 싶었는데 JWT토큰이 발목잡았다.

산 넘어 산이네

내일은 강의 중심으로 공부하다가 느낌 좋으면 더 구현해봐야지

매일 새로운 단축키를 만난다.

단축키 만세

 

- 단축키

Ctrl Shift +, -   함수접고펴기
Ctrl Alt O  안 쓰는 import정리

 

- JWT(JSON Web Token)

  • JWT는 유저를 인증하고 식별하기 위한 토큰기반 인증이다.
  • 토큰은 세션과는 달리 서버가 아닌 클라이언트에 저장되기 때문에 메모리나 스토리지 등을 통해 세션을 관리했던 서버의 부담을 덜 수 있다.
  • JWT가 가지는 핵심적인 특징이 있다면, 토큰 자체에 사용자의 권한 정보나 서비스를 사용하기 위한 정보가 포함(Self-Contained)된다는 것이다.
  • JWT는 .을 기준으로 헤더(Header) - 내용(Payload) - 서명(Signature)으로 구성되어있다.

 

JWT는 다음과 같은 순서로 진행된다.

  1. 클라이언트 사용자가 아이디,패스워드를 통해 웹서비스 인증.
  2. 서버에서 서명된 JWT를 생성하여 클라이언트에 응답으로 돌려주기
  3. 클라이언트가 서버에 데이터를 추가적으로 요구할 때 JWT를 HTTP Header에 첨부
  4. 서버에서 클라이언트로 온 JWT 를 검증
  • 전자 서명에는 비대칭 암호화 알고리즘을 사용하므로 암호화를 위한 키와 복호화를 위한 키가 다르다.
  • 암호화(전자서명)에는 개인키를, 복호화(검증)에는 공개키를 사용한다.

JWT 장/단점

장점

  • 동시 접속자가 많을 때 서버 측 부하 낮춤
  • Client, Sever 가 다른 도메인을 사용할 때
    • 예) 카카오 OAuth2 로그인 시 JWT Token 사용

단점

  • 구현의 복잡도 증가
  • JWT 에 담는 내용이 커질 수록 네트워크 비용 증가 (클라이언트 → 서버)
  • 기생성된 JWT 를 일부만 만료시킬 방법이 없음
  • Secret key 유출 시 JWT 조작 가능

참고 자료 : https://veneas.tistory.com/entry/Spring-Boot-JWT-JSON-Web-Token-%ED%86%A0%ED%81%B0-%EA%B8%B0%EB%B0%98-%EC%9D%B8%EC%A6%9D

 

[Spring Boot] JWT (JSON Web Token) 토큰 기반 인증

목차 1. 환경 Spring Boot 2.5.6 (Gradle) JDK 11(Java 11) IntelliJ Postman 2. JWT 클라이언트와 서버, 서비스와 서비스 사이 통신 시 권한 인가(Authorization)를 위해 사용하는 토큰 Bearer Authentication (J..

veneas.tistory.com

 

- 잔잔바리

정규표현식을 사용했어야 했는데, pattern, matches() 처음써봤다.

 

- 생성자 생성 어노테이션

@NoArgsConstructor 파라미터가 없는 기본 생성자를 생성
@AllArgsConstructor 모든 필드 값을 파라미터로 받는 생성자를 만듦
@RequiredArgsConstructor final이나 @NonNull인 필드 값만 파라미터로 받는 생성자 만듦

이건 계속 마주칠거같다.

 

- 내일 할 일

- WIL작성

- 스프링시큐리티, jwt강의 듣기

'TIL' 카테고리의 다른 글

항해99_TIL220530 (JWT)  (0) 2022.05.31
항해99_WIL220529 (DI, IoC, Bean)  (0) 2022.05.29
항해99_TIL220527 (Spring Security란)  (0) 2022.05.28
항해99_TIL220526 (제네릭, 스트림, 람다식)  (0) 2022.05.26
항해99_TIL220525 (RESTful한 API)  (0) 2022.05.26