개발/spring boot

JWT

Eprld 2025. 3. 21. 16:53

JWT란?

-Json Web Token, 서버와 클라이언트 사이 통신에서 사용되는 Json형태의 웹 토큰

  >서버의 확장성이 높고, 특정 db 나 서버에 의존하지 않아도 됨

 

JWT의 구성

-헤터, 페이로드, 서명으로 구성되어 있다.

 

JWT 인증 방식

-사용자가 로그인하면 서버에느 JWT 값을 반환함

-전송된 JWT가 주로 로컬스토리지나 쿠키에 저장함

-이후 서버로 요청할 떄에 클라이언트에서 Header에 담아서 보냄(Athorization)

-토큰을 받은 서버는 서명을 확인하고 내용을 파싱해서 데이터를 사용함

-이후 추가적으로 토큰이 만료된다면 refrash token을 이용해서 새로운 토큰 발급

 

JWT와 다른 인증 방식 비교 - 세션

항목 세션/쿠키 기반 인증 JWT 인증
상태 관리 상태 유지(서버가 세션 데이터를 관리) 무상태(서버 측 세션 데이터 없음)
확장성 분산 환경에서 확장성 낮음 매우 높은 확장성
폐기 용이성 용이(서버에서 세션 무효화 가능) 어려움(토큰 블랙리스트 필요)
보안 안전하지만 특정 공격에 취약 적절한 구현 시 안전
저장 위치 서버 측 세션 데이터 저장 클라이언트 측 토큰 저장
크로스 도메인 지원 동일 출처 또는 CORS 설정에 제한됨 JWT를 통한 크로스 도메인 지원

 

인증과 인가의 차이

-인증은 사용자를 식별하는 프로세스

-인가는 권한을 확인하는 프로세스

-인증은 로그인 같은 사용자를 확인하는 과정인 것에 반해 인가는 유저가 이 API를 사용할 수 있는 권한을 확인한다.

>JWT에 User의 권한을 Role base로 추가해 admin과 일반 유저를 구분한다.

 

Oauth란?

-third-party 애플리케이션에 유저의 정보에 접근할 수 있게 하는 표준 프로토콜

>단, 비밀번호와 같은 것을 같이 공유하지 않고 제한된 정보를 제공하게 한다.

 

Oauth 동작 방식

-Resource Owner - 데이터를 가지고 있는 유저

-Client - 데이터 접근을 하려는 서드파티 애플리케이션

-Authorization & Resource Server > 토큰을 만들고 데이터를 제공하는 서버

 

'개발 > spring boot' 카테고리의 다른 글

comment 댓글 작성 / user별 게시글 리스트 작성  (0) 2025.01.27
post 글쓰기  (0) 2025.01.27
postman으로 데이터 생성 및 조회  (0) 2025.01.22
에러 처리  (0) 2025.01.22
querydsl  (0) 2025.01.19