JWT 소개 및 프로젝트 생성

박지윤·2022년 9월 1일
0

Backend

목록 보기
9/12

JWT는 ...
RFC 7519 웹 표준으로 지정 되어있고
JSON 객체를 사용해서 토큰 자체에 정보들을 저장하고 있는 Web Token이다.

JWT를 이용하는 방식은 헤비하지 않고 아주 간편하고 쉽게 적용할 수 있어서 사이드 프로젝트를 진행할 때는 아주 유용하다.

✅ JWT의 구성

  • Header
    Signature를 해싱하기 위한 알고리즘 정보들이 담겨있다.
  • Payload
    서버와 클라이언트가 주고받는, 시스템에서 실제로 사용될 정보에 대한 내용들을 담고 있다.
  • Signature
    토큰의 유효성 검증을 위한 문자열이다.
    이 문자열을 통해 서버에서는 토큰이 유효한지 검증할 수 있다.

✅ JWT의 장점

  • 중앙의 인증서버와 데이터 스토어에 대한 의존성이 없다.
    ➡ 시스템 수평 확장에 유리하다.
  • Base64 URL Safe Encoding을 이용하기 때문에 URL, Cookie, Header 어디에서든 사용할 수 있는 범용성을 가지고 있다.

✅ JWT의 단점

  • Payload에 저장하는 정보가 많아지면 네트워크 사용량(트래픽의 크기)이 증가한다.
    ➡ 이를 고려하여 설계해야 한다.
  • 토큰이 클라이언트에 저장되기 때문에, 서버에서 클라이언트의 토큰을 조작할 수 없다.

프로젝트 생성

spring initializer를 통해 프로젝트를 생성한다.

만약 IntelliJ를 이용한다면,
IntelliJ Preferences > Annotation processors > Enable annotation processing을 체크해주자.

다음으로, main > java 의 개인적으로 이름 붙여진 패키지 안에 'controller' 패키지를 만들어주고,
'controller' 패키지 안에 'HelloController.java' 파일을 만들어준다.

@RestController와 @RequestMapping 어노테이션을 추가해주고, 패스는 "/api"로 한다.

간단한 문자열을 리턴해주는 api를 만들어준다.
테스트를 위해 Application을 실행한다.

필자는 8080이 이미 사용중이라는 에러가 떴는데, 이 문제는 cmd 창을 관리자 권한으로 실행하여 프로세스를 강제로 종료시켜줘야 한다,,,,

netstat -ano | findstr 8080
taskkill /F /pid [process_id]

윈도우는 위의 코드로 강제 종료 가능하다!

api에 대한 테스트는 포스트맨을 사용해보자.

새로운 collection을 만들어준다. (필자는 jwt-tutorial로 만들었다.)

업로드중..

만들어준 collection에 'hello'라는 request를 추가해준다.
그리고 'http://localhost:8080/api/hello'를 send 한다.
그럼, 401 Unauthorized 응답이 리턴된 것을 볼 수 있다.


다음에 계속,,,

[인프런 강의 _ Spring Boot JWT Tutorial을 참고하였습니다.]

0개의 댓글