Tech/Spring | Spring Boot

[Spring Boot] JWT 이란? (API 서버/Token)

싱브이 2024. 5. 4. 15:13
728x90
반응형

 

Ajax와 JSON을 이용해서 데이터를 주고받는 구조에서 HttpSession이나 Cookie를 이용하는 방식은 제한이 있다. 이를 해결하기 위해 인증받은 사용자들은 특정한 문자열(토큰)을 이용한다. → JWT(JSON Web Token)

 

 

 


API 서버

 

API 서버란 필요한 데이터만 제공하는 서버를 의미한다. 화면을 제공하는 것이 아닌 필요한 데이터를 호출하고 그 결과를 반환받는 방식으로 동작한다. 

 

*서버 사이드 렌더링(SSR, Server Side Rendering) : 브라우저에 필요한 화면의 모든 코드(HTML)를 서버에서 만들어 전송하는 방식으로 JSP, Thymeleaf 가 있다. 

 

API 서버는 화면 구성은 별도의 클라이언트 프로그램에서 처리하고 서버에서는 순수한 데이터만을 전송한다.

클라이언트 서버 렌더링(CSR, Client Side Redering)

 

CSR방식은 클라이언트에서 데이터를 가공해서 화면에 보여주기 때문에 데이터를 어떻게 구성해서 주고받을 것인지가 중요하다. (주로 JSON/XML 포맷으로 데이터를 구성하고 REST 호출방식을 이용함)

 

API 서버의 특징 중 하나는 '무상태(Serverless)'이다. REST나 HTTP의 특징이기도 하다.

 

전통적인 SSR방식은 쿠키와 세션을 이용해서 서버에서 사용자 정보를 추적할 수 있다. 쿠키의 경우에는 쿠키를 발행한 서버를 호출할 때만 전달되고, 세션은 서버 내부에서 JSESSIONID와 같은 이름의 쿠키를 통해서 사용자 정보를 보관하고 처리한다.

API 서버는 쿠키를 이용해서 데이터를 교환하는 방식이 아닌 단순히 순수하게 데이터를 요청하고 응답하는 방식으로 구성된다. 

 

 

 


토큰 기반의 인증

 

API 서버가 단순히 데이터만을 주고받을 때 외부에서 호출하는 URI를 알게 되면 문제가 생긴다. 사용자만 프로그램에서만 API 서버를 호출할 수 있도록 해야 한다 !!

토큰은 입장권과 비슷하다. 토큰은 서버와 클라이언트가 주고받는 '문자열'로 이용하고자하는 API 서버에서 토큰을 받아 보관하고 호출할 때 자신이 가지고 있는 토큰을 같이 전달해서 API 서버에서 이를 확인한다.

 

 

 


Access Token/ Refresh Token

 

  • Access Token

입장권에 해당한다. 외부에서 API 서버를 호출할 때 Access Token을 함께 전달하여 이를 검증하고 그 결과에 따라 요청을 처리한다.

이 때, 최대한 유효 기간을 짧게 지정한다. (뺏기면 큰일이기 때문)

 

  • Refresh Token

Access Token을 새로 발급받을 수 있는 Refresh Token을 같이 생성해준다. 이는 필요할 때 다시 Access Token을 발급 받을 수 있도록 한다. (Refresh Token이 필수는 아님)

 

 

 

728x90
반응형