JWT (Json Web Token)
가장 일반적인(전통적인) 형태의 Web Application 형태
- Backend Server와 Frontend Server가 하나로 합치어진 형태(Monolithic)
- Backend 또는 Logic 에 문제가 생길 경우, Backend & Frontend 모두 사용할 수 없다.
JWT의 특징
무상태성
HttpSession은 서버에 사용자에 정보를 저장하는 방법.
Token 방식은 서버가 사용자의 정보를 Token이라는 형태로 클라이언트에게 전송.
서버는 사용자의 정보를 가지지 않는다.
확장성
JWT는 서버가 사용자의 정보를 가지지 않기 때문에, 다른 서버의 API를 사용할 때에도
동일한 토큰으로 인증을 처리할 수 있다.
서비스를 위한 서버를 추가하더라도 인증과 관련된 이슈가 존재하지 않는다.
REST API
브라우저 이외의 방법으로 HTTP를 호출하는 방법
PostMan 툴이 필요함
인증의 주체는 클라이언트
JWT 토큰 발급 및 검증 기능 구현하기
JWT 필터 구현하기
JWT 필터 활성화 설정하기
JWT 생성 End-point 작성하기
JWT 발급 테스트 - PostMan으로 테스트해보기
JWT 정상 발급
JWT 발급 실패
JWT 인증 End-point 만들기
ReplyController.java 파일을 복사하고 RestReplyController.java 로 붙여넣기
(RestReplyController.java)
/api/ URL은 CSRF 체크 하지 않도록 처리하기 (SecureConfig.java)
MSA (Micro Service Architecture)
개선된 형태의 Web Application 형태
- Backend 와 Frontend가 완전히 분리되어진 형태 (MSA: Micro Service Architecture)
Client와 Server는 RESTful API로 통신한다.- Backend에 문제가 생기더라도 Frontend에 큰 영향을 주지 않는다.
- 사용자 입장에서는 좋지만 장애 복구가 힘들다.
MSA 형태의 문제점