Java
JWT
내이름효주
2024. 5. 10. 17:50
💡 JWT(Json Web Token)
- 인증에 필요한 정보들을 암호화시킨 JSON 토큰을 의미
- JWT 기반인증은 JWT 토큰을 HTTP 헤더에 실어 서버가 클라이언트를 식별하는 방식
- 유효성 체크, CPU 연산
- 구조: 헤더(Header) · 내용(Payload)· 서명(Signature)
🥮 Cookie: 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터, 조각 신원 확인을 위한 도구는 아니고 클라이언트와 서버가 공유하는 데이터
- 쿠키 인증방식
- 클라이언트(브라우저)가 서버에 요청을 보내
- 서버는 클라이언트의 요청에 대한 응답을 작성할 때 클라이언트 측에 저장하고 싶은 정보를 응답 헤더의 Set-Cookie에 담아
- 이후 해당 클라이언트는 요청을 보낼 때마다 매번 저장된 쿠키를 요청 헤더의 Cookie에 담아보냄
- 단점!
- 보안에 취약(쿠키의 값을 그대로 보내기 때문에 유출, 조작 당할 위험있음)
- 용량 제한이 있음
- 브라우저간 공유 불가능 등등
🖥 Session 인증: 쿠키를 보안 ➡ 비밀번호, 카드번호 등의 중요한 정보는 서버측에서 관리
- 클라이언트가 서버의 요청을 보낼 때 서버는 저장해둔 세션 ID 활용
- 예) 로그인 요청이 성공하면 서버는 세션 ID를 서버에 저장해두고 클라이언트는 브라우저의 세션ID를 저장해줌
(클라이언트는 세션ID를 쿠키를 통해 기억)
앱 시작
- 아이디 비번 입력
- 앱이 서버에게 해당 아이디 비번이 유효한지 물어바
- 유효하면 앱은 그 아이디, 비번을 영구 저장
- 글쓰기 -> HTTP POST title, body, id, pw
토큰
- 서버가 토큰을 발급(토큰으로 아이디 패스워드 역할)
단점이 신원확인할때 무조건 db select를 해야함
시크릿키: 이 토큰이 정말 내가 만들었는지?
토큰: