Java

JWT

내이름효주 2024. 5. 10. 17:50

 💡 JWT(Json Web Token)

  • 인증에 필요한 정보들을 암호화시킨 JSON 토큰을 의미
  • JWT 기반인증은 JWT 토큰을 HTTP 헤더에 실어 서버가 클라이언트를 식별하는 방식
  • 유효성 체크, CPU 연산
  • 구조: 헤더(Header) · 내용(Payload)· 서명(Signature)

🥮 Cookie: 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터, 조각 신원 확인을 위한 도구는 아니고 클라이언트와 서버가 공유하는 데이터 

  • 쿠키 인증방식
    1. 클라이언트(브라우저)가 서버에 요청을 보내
    2. 서버는 클라이언트의 요청에 대한 응답을 작성할 때 클라이언트 측에 저장하고 싶은 정보를 응답 헤더의 Set-Cookie에 담아
    3. 이후 해당 클라이언트는 요청을 보낼 때마다 매번 저장된 쿠키를 요청 헤더의 Cookie에 담아보냄
  • 단점!
    • 보안에 취약(쿠키의 값을 그대로 보내기 때문에 유출, 조작 당할 위험있음)
    • 용량 제한이 있음
    • 브라우저간 공유 불가능 등등

🖥 Session 인증: 쿠키를 보안 ➡ 비밀번호, 카드번호 등의 중요한 정보는 서버측에서 관리

  • 클라이언트가 서버의 요청을 보낼 때 서버는 저장해둔 세션 ID 활용
  • 예) 로그인 요청이 성공하면 서버는 세션 ID를 서버에 저장해두고 클라이언트는 브라우저의 세션ID를 저장해줌
    (클라이언트는 세션ID를 쿠키를 통해 기억)

 

앱 시작

- 아이디 비번 입력

- 앱이 서버에게 해당 아이디 비번이 유효한지 물어바

- 유효하면 앱은 그 아이디, 비번을 영구 저장

- 글쓰기 -> HTTP POST title, body, id, pw

 

토큰

- 서버가 토큰을 발급(토큰으로 아이디 패스워드 역할)

단점이 신원확인할때 무조건 db select를 해야함

 

시크릿키: 이 토큰이 정말 내가 만들었는지?

토큰: