투케이2K

67. (Network/네트워크) JWT 와 JSESSIONID 차이점 정리 - 액세스 인증 토큰 및 세션 아이디 본문

Network

67. (Network/네트워크) JWT 와 JSESSIONID 차이점 정리 - 액세스 인증 토큰 및 세션 아이디

투케이2K 2024. 10. 4. 19:47

[구 분]

구분 : Network / 네트워크

제목 : JWT 와 JSESSIONID 차이점 정리 - 액세스 인증 토큰 및 세션 아이디

 

[설 명]

 

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 환경 : Web / HTTP

- 기술 : JWT , JSESSIONID

// --------------------------------------------------------------------------------------





// --------------------------------------------------------------------------------------
[JWT 간략 설명]
// --------------------------------------------------------------------------------------

1. JWT 란 클라이언트와 서버 사이에서 통신을 수행할 때 권한을 인증 하기 위해 사용하는 토큰입니다

  >> 클라이언트-서버 간의 토큰 기반 방식
  >> 서명을 통한 무결성 보호


2. JWT 는 Json Web Token 약어로 JSON 형태의 토큰 문자열을 사용합니다


3. JWT 구성 요소 : 

  >> 헤더 (header) : 알고리즘 , 토큰 사용에 대한 정보 (ex: 어떠한 토큰을 사용할 것 인지)
  >> 페이로드 (payload) : 전달하려는 정보 (사용자 ID, 토큰 발급일, 토큰 만료일, 기타 데이터 등)
  >> 서명 (signature) : 서버가 발급해준 비밀키로 헤더 , 페이로드 를 암호화시켜 토큰을 변조하기 어렵게 만듦


4. 클라이언트는 서버가 내려준 JWT 의 AccessToken 을 사용해 브라우저 이동 및 HTTP 요청 시 Header 헤더에 Authorization 값을 추가해 인증 요청을 합니다

  >> Ex : Authorization : Bearer token ...
  >> 서버에서는 요청 들어온 헤더 인증 토큰 값 파싱 후 (Bearer 제거) 유효성을 검증합니다


5. JWT 는 토큰 기반 인증 방식으로 서버 의존성이 적어 확장성 및 로드 밸런싱에 용이합니다


6. JWT 에서 AccessToken 만료 시 RefreshToken 을 사용해 다시 인증 토큰을 갱신 및 발급할 수 있습니다

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[JSESSIONID 간략 설명]
// --------------------------------------------------------------------------------------

1. JSESSIONID 는 서버 기반 세션 식별자로 각 고유한 클라이언트 세션 상태 관리에 사용 됩니다.

  >> WAS 톰캣 컨테이너에서 세션을 유지하기 위해 발급 되는 키 (Key) 입니다
  

2. JSESSIONID 는 자바 웹 애플리케이션에서 세션 관리를 위한 용도로 사용 되며, 클라이언트의 상태를 유지하고 추적하기 할 수 있습니다


3. JSESSIONID 는 WAS 톰캣이 http 최초 요청이 들어온 클라이언트에게 발급해 줍니다

  >> 클라이언트가 브라우저에 접근
  >> 톰캣은 Response 헤더에 JSESSIONID 발급
  >> Set-Cookie: JSESSIONID=4BB861E0BE1A9A7DE7DB926DF0772BDE


4. JSESSIONID 는 발급 되면 Cookie 에 저장 되며, 브라우저 이동 및 HTTP 요청 시 함께 전달 되어 인증 방식에 사용됩니다

  >> JSESSIONID 는 동일한 도메인 내에서 유지가 되며, 서브 도메인이 다른 경우는 쿠키 값이 유지 되지 않습니다 (포트 번호는 달라도 무관)


5. JSESSIONID 는 서버에서 세션 관리를 수행하기 때문에 서버에 대한 의존성이 크며, 서버 성능이 세션 관리에 중요한 역할을 수행합니다

  >> 클라이언트 동시 접속이 많은 경우 세션 관리에 문제가 발생할 수 있으며, 시스템 부하가 초래 될 수 있음


6. JSESSIONID 를 사용해 서버 환경은 HTTPS 사용을 권장합니다

// --------------------------------------------------------------------------------------





// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

[JWT 개념 설명]

https://blog.naver.com/kkh0977/222934042760?trackingCode=blog_bloghome_searchlist


[JWT 토큰 갱선 처리 로직]

https://blog.naver.com/kkh0977/223604705723?trackingCode=blog_bloghome_searchlist


[NodeJs - JWT 토큰 생성 방법]

https://blog.naver.com/kkh0977/223312598939?trackingCode=blog_bloghome_searchlist


[NodeJs - JWT 토큰 유효성 검증]

https://blog.naver.com/kkh0977/223311615955?trackingCode=blog_bloghome_searchlist


[NodeJs- JWT 토큰 갱신 방법]

https://blog.naver.com/kkh0977/223312630682?trackingCode=blog_bloghome_searchlist


[JSESSIONID 개념 설명]

https://blog.naver.com/kkh0977/223249516775?trackingCode=blog_bloghome_searchlist


[Cookie 쿠키 속성 SameSite 샘사이트 옵션 및 정책 변경 사항 정리]

https://blog.naver.com/kkh0977/223595018272?trackingCode=blog_bloghome_searchlist

// --------------------------------------------------------------------------------------

 

반응형
Comments