로그인을 한 번만 하면 다음에 안해도되는 이유는? >>
📌 세션: 서버와 클라이언트 연결이 활성화된 상태
📌 세션 ID: 웹 서버 또는 DB에 저장되는 클라이언트의 ID(사용자 식별을 위한)
로그인 요청
로그인 성공
2-1. 세션 ID 생성
2-2. 응답 헤더로 set-cookie에 세션 ID 담아 전송
2-3. DB또는 웹 서버에 세션 ID 저장
요청 헤더로 cookie에 저장된 값 자동으로 불러옴
cookie의 세션 ID 값을 확인하여 유효한지 확인
로그인 유지
또 다른 로그인 인증 기법은?
토큰(Token)
: 인증에 사용되는 정보를 포함하고 있는 작은 조각(일반적으로 암호화됨)
발급자(Issuer)
: 토큰을 발급하는 엔티티 또는 서비스로, 토큰의 유효성을 검증하고 사용자를 인증
페이로드(Payload)
: 토큰에 포함된 정보(사용자의 신원, 권한, 추가 데이터 등)
: 페이로드는 일반적으로 JSON 형식으로 인코딩되어 있으며, 클레임(claim)이라고도 불림
사용자가 로그인하여 인증 요청
유효한 사용자일 시 토큰 발급
서버는 발급된 토큰을 클라이언트(ex. 웹 브라우저 또는 모바일 앱)에게 전달
👉 일반적으로 HTTP 헤더 또는 쿠키에 토큰을 포함시켜 전송
인증 및 권한 부여
클라이언트: API 호출 또는 요청 시, 토큰을 포함하여 서버에 전송
서버: 토큰의 유효성 검증, 페이로드의 정보를 기반으로 사용자를 인증 및 권한 부여
작업 수행
클라이언트: 허용된 작업 수행
서버: 토큰을 통해 사용자의 신원 식별, 요청된 작업 처리
토큰 기반 인증은 상태를 서버에 저장하지 않고 클라이언트 측에서 처리하므로, 확장성과 분산 환경에서 유리한 점이 있다. 또한, 토큰은 자체적으로 유효성을 검증할 수 있으므로 서버 부하를 줄이고 보안성을 높일 수 있다!
Refresh 토큰과 Access 토큰은 토큰 기반 인증에서 사용되는 두 가지 다른 종류의 토큰입니다. 각각의 역할과 사용 방식은 다음과 같습니다:
Access 토큰
Refresh 토큰: