[Java] JWT(Json Web Token)을 발행, 확인하는 방법
페이지 정보
본문
안녕하세요. 명월입니다.
이 글은 Java에서 JWT(Json Web Token)을 발행, 확인하는 방법에 대한 글입니다.
저는 지금까지 웹 환경에서 로그인, 로그아웃 기능을 만들 때 보통 세션을 이용한 방법으로 로그인, 로그아웃을 사용했습니다. 사실 최근까지도 그렇게 사용했습니다.
세션에 정보를 넣는다 해도 쿠키의 세션 ID를 탈취하면 보안에 문제가 생기는 건 마찬가지지만 제가 알기로는 그나마 가장 보편적으로 사용하는 인증 방식이지 않을까 생각합니다.
최근에 프로젝트 형식이 마이크로 서비스 아키틱처에서 모듈별로 서버를 분할하거나 대용량 트래픽에 맞추어서 웹 서버 로드 밸런싱으로 여러 서버에 트래픽 분산 형식으로 많이 작성합니다.
그럴 경우 문제가 로그인 세션을 어떻게 구성하는 것입니다. 가장 많이 사용하는 방법으로는 하나의 세션 서버를 만들어서 Redis 데이터베이스를 설치하고 각 서버에서 Redis 서버에 세션 체크를 하는 것으로 대응이 가능합니다.
그런데 이것도 만능이 아니라서 마이크로 서비스로 웹 서버를 극단적으로 분할을 하게 된다면 세션 서버의 부하가 걸리고 여러가지 이유가 있겠네요..
사실 저의 경우는 그런 상황에서 JWT를 사용한 건 아니고 프로트엔드와 백엔드의 작업을 분리하는 과정에서 보안을 생각했을 때 좀 더 효과적으로 로그인 관리 기능을 사용하는 방법이 없을까 고민하던 차에 JWT라는 것을 알게 되었습니다.
링크 - https://jwt.io/introduction
JWT의 기능을 이해하는데 저도 좀 시간이 걸렸습니다. 사실 생각해 보면 굉장히 단순한 논리였는데.. 로그인 정보를 서버에 두어야 한다는 고정관념 때문인가 이게 과연 보안이 유용할까를 계속 고민했던 것 같습니다.
사실 인증만 된다고 하면 그 정보를 굳이 서버의 세션에 둘 필요는 없었는데.. 생각해 보면 지금까지 그렇게 비효율적으로 로그인 정보를 두었을까 생각이 되네요...
이 글은 Java에서 JWT(Json Web Token)을 발행, 확인하는 방법에 대한 글입니다.
저는 지금까지 웹 환경에서 로그인, 로그아웃 기능을 만들 때 보통 세션을 이용한 방법으로 로그인, 로그아웃을 사용했습니다. 사실 최근까지도 그렇게 사용했습니다.
세션에 정보를 넣는다 해도 쿠키의 세션 ID를 탈취하면 보안에 문제가 생기는 건 마찬가지지만 제가 알기로는 그나마 가장 보편적으로 사용하는 인증 방식이지 않을까 생각합니다.
최근에 프로젝트 형식이 마이크로 서비스 아키틱처에서 모듈별로 서버를 분할하거나 대용량 트래픽에 맞추어서 웹 서버 로드 밸런싱으로 여러 서버에 트래픽 분산 형식으로 많이 작성합니다.
그럴 경우 문제가 로그인 세션을 어떻게 구성하는 것입니다. 가장 많이 사용하는 방법으로는 하나의 세션 서버를 만들어서 Redis 데이터베이스를 설치하고 각 서버에서 Redis 서버에 세션 체크를 하는 것으로 대응이 가능합니다.
그런데 이것도 만능이 아니라서 마이크로 서비스로 웹 서버를 극단적으로 분할을 하게 된다면 세션 서버의 부하가 걸리고 여러가지 이유가 있겠네요..
사실 저의 경우는 그런 상황에서 JWT를 사용한 건 아니고 프로트엔드와 백엔드의 작업을 분리하는 과정에서 보안을 생각했을 때 좀 더 효과적으로 로그인 관리 기능을 사용하는 방법이 없을까 고민하던 차에 JWT라는 것을 알게 되었습니다.
링크 - https://jwt.io/introduction
JWT의 기능을 이해하는데 저도 좀 시간이 걸렸습니다. 사실 생각해 보면 굉장히 단순한 논리였는데.. 로그인 정보를 서버에 두어야 한다는 고정관념 때문인가 이게 과연 보안이 유용할까를 계속 고민했던 것 같습니다.
사실 인증만 된다고 하면 그 정보를 굳이 서버의 세션에 둘 필요는 없었는데.. 생각해 보면 지금까지 그렇게 비효율적으로 로그인 정보를 두었을까 생각이 되네요...
첨부파일
-
명월 일지 __ [Java] JWTJson Web Token을 발행, 확인하는 방법.pdf (1.2M)
0회 다운로드 | DATE : 2023-02-24 10:51:58
관련링크
-
https://nowonbun.tistory.com/281
2422회 연결
- 이전글[Node.js] 토큰(token) 이란? / 사용법 ( JWT ) 23.02.24
- 다음글mssql oracle 데이터 타입 비교 23.02.24
댓글목록
등록된 댓글이 없습니다.