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 |