jwt

김지원·2023년 9월 25일
0

세션(session)

jwt(json web token)


서버가 켜지면 애플리케이션영역/세션영역 생김

애플리케이션 객체 : 서버가 꺼질때까지 떠 있음.
request.application

해쉬맵이라서 키(jsessionid)로 밸류를 찾음

클라이언트가 1번이라도 요청을 보내면 jsessionid 클라이언트가 받아서 쿠키에 저장함
클라이언트는 서버에 요청할때 쿠키를 함께 보냄

세션은 클라이언트 본인의 jsessionid 영역에만 접근 가능함
클라이언트가 jsessionid를 잃어버리면 접근X

statefull서버 = 상태 저장
세션이 없으면 기억 못함 : stateless서버

request : 클라이언트마다 따로 씀
풀링 미리 만들어둬서 클라이언트 요청 오면 준다
request 최대 개수가 최대 동시접속자 수

쿠키 httponly면 자바스크립트로 접근이 안됨 = 프런트엔드 세션 못씀
stateless서버 = 세션안씀 클라이언트정보 저장 안함

클라이언트가 요청할때 세션에 접근했는데 세션 쿠키가 없으면 서버가 준다
있으면 있는걸 요청할때 들고가니까 그걸 보고 서버가 안줌

  1. session은 서버 확장이 어렵다
    스티키 세션
    세션 복제
    메모리 디비(Redis)를 공유
    일반 db를 공유할 수는 없다. I/O때문에

  2. 자바스크립트는 jsessionid에 접근 못함.
    jsessionid는 http only 정책(브라우저만 접근 가능)이 있음

  3. 서버 만들 때 고려할 점
    프론트엔드 (JS, Java , C#, C++, Dart)
    서버가 모든 프론트에 요청을 처리할 수 있게 만들어야 좋다
    세션을 사용할 수 없다

  4. 그래서 토큰 기반 서버를 사용 (stateless - 세션을 사용하지 않음)
    전자서명에 목적이 있다 (암호화X)

jwt는 토큰 생성과 검증을 같은 곳에서 하니까, 대칭키 쓰면 된다
암호화보다 검증이 중요함
토큰 받아서 열리면=나(서버)가 만든거나끼 신뢰
상태는 토큰 안에 저장되어 있으니까 서버에 저장할 필요 없음


OAUTH


http헤더에서 자주 쓰는거
쿠키 마임타입 Authorization


JWT방식에서 세션은 그냥 저장소 용도로만 쓴다
서버 내부에서만 쓰다가 마지막에 jsessionid를 안주거나 세션삭제

profile
https://github.com/k7850

0개의 댓글

관련 채용 정보