Swagger , Spring Security , JWT

두별·2022년 4월 15일
0

TIL

목록 보기
16/46

Swagger UI

스승님께서 API 문서를 만들자고 하셔서 API 문서가 대체 뭐지 ? 했는데 .. Swagger 였구나 !!!

이렇게 API에 대한 문서가 필요한 이유는 RESTful API를 구현할때 Frontend 개발자들에게 API에 대한 정보를 전달하기 위한 용도로 쓰일 수 있고 해당 API가 어떤 데이터를 주고받는지 쉽게 볼 수 있기 위함이다. Swagger를 사용하면 이런 API문서를 자동화할 수 있다.

Swagger를 사용하기 위해서는

  1. 의존성 추가
  2. 프로젝트에 Swagger 설정 Bean을 등록
  3. SwaggerConfig 파일 생성, 코드 작성

위와 같은 셋팅 작업을 해주어야 한다.

셋팅방법은 아래 참고
https://kim-jong-hyun.tistory.com/49

Spring Security

Spring 기반의 애플리케이션의 보안(인증과 권한, 인가)을 담당하는 스프링 하위 프레임워크

  • 인증(Authentication): 해당 사용자가 본인이 맞는지를 확인하는 절차
  • 인가(Authorization): 인증된 사용자가 요청한 자원에 접근 가능한지를 결정하는 절차

참고
https://mangkyu.tistory.com/76

JWT(Json Web Token)

{ ... }.{ ... }

클라이언트와 서버, 서비스와 서비스 사이 통신 시 권한 인가(Authorization)를 위해 사용하는 토큰이다.

일반적으로 헤더, 페이로드, 서명 세 부분을 점으로 구분하는 구조로 되어있다.
헤더에는 토큰 타입과 해싱 알고리즘을 저장하고
페이로드에는 실제로 전달하는 정보, 서명에는 위변조를 방지하기위한 값이 들어가게된다.

Session이나 Redis를(Redis는 하나의 DB같은 개념이라서 해당안됨) 사용할 때 여러 서버를 사용하게 되면 인메모리에 저장되는 Session을 서버끼리 공유해주어야 하는 기능이 추가되어야 하지만 JWT는 Frontend에서 Token을 가지고 있기 때문에 해당 문제에 벗어날 수 있다.

다만 JWT는 클라이언트에 정보가 노출될 수 있기 때문에 JWT 안에 민감한 정보는 담지 말아야한다.

0개의 댓글