🟩/JWT 5

pasds-world 프로젝트 구현 방법

Redis를 활용한 JWT 화이트 리스트 방식 쿠키에 담아서 클라이언트로 전송쿠키 설정 SameSite: Strict, HttpOnly: true, Secure: true단일 기기 로그인 구현{ "sub": "3" or "wlsdyd4@naver.com", // memberId or email "jti": "4ee1b3d8-53bc-49ac-9667-e8d9f844f23b", // UUID "tokenType": "TEMPORARY", // EMAIL or TEMPORARY or ACCESS or REFRESH "exp": 1715610530 // tokenType.expiredTime}- redisKey: sub_tokenType- redisValue: jti- TTL: tokenType.exp..

🟩/JWT 2024.06.13

JWT 전송

쿠키브라우저가 쿠키를 자동으로 관리하고 요청마다 자동으로 전송한다.HttpOnly 속성으로 XSS 공격을 방지Secure 속성으로 네트워크 공격을 방지SameSite 속성으로 CSRF 공격을 방지헤더클라이언트 측 로컬, 세션 저장소에 저장하고, 각 요청 시 Authorization 헤더에 포함하여 전송한다. 저장소에 저장된 토큰은 자동으로 전송되지 않으므로 CSRF 공격을 방지저장소에 저장된 토큰은 JavaScript에서 접근할 수 있으므로  XSS 공격에 취약클라이언트 측에 안전하게 저장하기 위해 추가적인 보안 조치가 필요하다.  localStorage와 sessionStorage는 편리하지만, JWT를 저장하기에는 보안상 큰 위험이 있습니다. OWASP는 JWT를 쿠키에 저장하고 HttpOnly, S..

🟩/JWT 2024.06.12

화이트 리스트, 블랙 리스트

화이트 리스트 방식유효한 JWT 토큰을 서버에 저장하고 관리사용자가 로그아웃하거나 토큰이 만료되면 화이트리스트에서 해당 토큰을 제거장점토큰의 유효성을 확실하게 보장한다.토큰을 쉽게 무효화할 수 있다.특정 사용자의 세션을 쉽게 추적하고 제어할 수 있다.단점모든 유효한 토큰을 서버에 저장하고 관리해야 하기 때문에, 서버의 부하가 증가할 수 있다.블랙 리스트 방식무효화된 JWT 토큰을 서버에 저장하고 관리토큰이 만료되거나 사용자가 로그아웃할 때 해당 토큰을 블랙리스트에 추가장점화이트리스트에 비해 리소스를 적게 사용한다. 단점모든 토큰이 유효하다고 간주되므로, 새로운 공격 방식이 발견되면 대응이 늦어질 수 있다. ❓ 세션 인증 방식과 차이점이 뭘까?💡 서버 메모리둘 다 Redis를 이용한다고 생각하면 같다고 ..

🟩/JWT 2024.06.12

JWT

사용 이유독립적인 검증 시스템을 보유함으로 MSA에서 효과적이다.사용자의 세션 상태를 관리하지 않아도 되므로 효율적인 리소스 사용JWT란?JSON Web TokenJWT는 3 부분으로 나누어진다. HEADER사용된 알고리즘과 토큰의 타입PAYLOAD클레임은 실제 데이터를 의미한다. 등록된(Registered) 클레임사전 정의 되어 선택적으로 사용 가능exp (Expiration Time)jti (JSON Web Token id)등등공개(Public) 클레임JWT 사용자 커뮤니티에 공개 URI 형태로 지정 전 세계 적으로 고유하게 식별될 수 있는 방식 어떤 조직이나 개인도 사용가능ex ) "http://example.com/claims/department": "Engineering"비공개(Private) ..

🟩/JWT 2024.04.09