일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 인가 #
- ci/cd파이프라인
- spring security #jwt 토큰 #json web token #token #직렬화 #인증
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #웹개발
- java5기
- 스파르타 코딩클럽 #내배캠 #최종프로젝트 #4개월삭제 #국비지원 #자바
- 스파르타 코딩클럽 #내배캠 #모의면접 #예상질문 #http 메서드 종류 #메서드 #post #put #get #patch #대용량트래픽 #처리방법 #캐싱 #코드최적화 #db최적화 #트래픽 #로드밸런서
- 비트 #바이트 #이진수
- 스파르타 코딩클럽 #내배캠 #모의면접 #예상질문 #http 메서드 종류 #메서드 #post #put #get #patch #ci #ioc #의존성
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #OSI #ISO #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- 스파르타 코딩클럽 #내배캠 #모의면접 #예상질문 #http 메서드 종류 #메서드 #post #put #get #patch #aop #관점지향프로그래밍 #유지보수
- 스파르타 코딩클럽 #내배캠 #모의면접 #예상질문 #http 메서드 종류 #메서드 #post #put #get #patch #트랜잭션전파 #transaction
- 공간복잡도 #공간자원 #캐시메모리 #SRAM #DRAM #시간복잡도
- 스파르타 코딩클럽 #내배캠 #모의면접 #예상질문 #http 메서드 종류 #메서드 #post #put #get #patch #springmvc패턴 #model #view #controller
- 스파르타 코딩클럽 #내배캠 #모의면접 #예상질문 #http 메서드 종류 #메서드 #post #put #get #patch #get방식 #post방식 #http프로토콜 #클라이언트 #백엔드 #api
- 스파르타 코딩클럽 #내배캠 #최종프로젝트 #로그인 #인증인가 #jwt? #토큰인증 #액세스토큰 #리프레시토큰 #쿠키 #파싱 #서명키의 중요성 #security context holder
- 스파르타 코딩클럽 #내배캠 #모의면접 #예상질문 #http 메서드 종류 #메서드 #post #put #get #patch #ci #cd
- 스프링 #백엔드 #자바
- 쓰레드 #쓰레드풀 #프로세스
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #KDT #기본문법 #데이터베이스 #Computer #Science #CPU #메모리
- 스파르타 코딩클럽 #내배캠 #모의면접 #예상질문 #http 메서드 종류 #메서드 #post #put #get #patch #최종프로젝트 #aws s3 #프로필 이미지 수정 #자동삭제
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- 보안 #이슈
- 스파르타 코딩클럽 #내배캠 #모의면접 #예상질문 #http 메서드 종류 #메서드 #post #put #get #patch #소셜로그인 #네이버 #기능구현 #vue.js #spring boot #네이버로그인 #연동하기
- 스파르타 코딩클럽 #내배캠 #모의면접 #예상질문 #http 메서드 종류 #메서드 #post #put #get #patch #tdd #테스트 주도개발 #테스트코드 #유닛테스트
- 스파르타 코딩클럽 #인메모리db #h2 #연동이슈 #문제해결 #방법 #spring security #header #
- 프로세스 #CPU #시공유 #커널
- 챌린저스 #bod
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- Today
- Total
요리사에서 IT개발자로
스파르타 부트캠프 SpringBoot JWT인증, 인가 본문
JWT(Json Web Token)란
JSON 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim기반 WebToken이다.
토큰의 한 종류라고 생각하면된다.
쿠키저장소를 사용하여 JWT를 저장한다.
서버가 1대인 경우에는
Session1이 모든 Client의 로그인 정보를 소유한다
서버가 2대 이상인 경우(대용량 트래픽 처리)
Session마다 다른 Client 로그인 정보를 가지고 올 수 있다.
Client1의 로그인정보가 Servie1에 저장이되있다는 가정하에
Client1은 그런거 모르고 API를 요청한다면
Server2와 Server3에도 API를 요청하게 될 수 있다.
이러한 문제의 해결방법은
Sticky Session을 이용하여 Client마다 Server에 고정한다.
or
세션 저장소를 따로 생성하여 모든 세션을 저장한다.
위와 같은 문제해결을 위하여
세션 저장소(Session Storage)를 생성한 경우
Session Storage가 모든 Client의 로그인 정보를 소유하고 있기에
모든 서버에서 모든 Client의 API요청이 처리가 가능하다.
JWT를 사용하게 되면
로그인 정보를 Server에 저장하지 않고
Client에 로그인 정보를 JWT로 암호화하여 저장한다.
"JWT를 통하여 인증/인가"
또한 모든 서버에서 동일한 Secret Key를 소유한다.
Secret Key를통한 암호화/ 위조 검증을 한다.(복호화시에만)
JWT의 장점으로는
동시접속자가 많을 때 서버 측 부하를 낮춘다.
단점은
구현의 복잡도가 증가하고
JWT에 담는 내용이 많아질수록 네트워크 비용이 증가한다.
기 생성된 JWT를 일부만 만료시킬 방법이 없다
Secret Key가 공개되어 있어 JWT 조작이 가능하다.
Client가 username, password로 로그인 성공시에
서버에서 로그인정보를 받아 JWT로 암호화를 한다(Secret Key를 사용)
JWT 예시
서버에서 직접 쿠키를 생성해서 JWT를 담아 Client에 전달한다.
JWT전달 방법은 개발자가 정한다.
Cookie cookie = new Cookie(AUTHORIZATION_HEADER, token); // Name-Value
cookie.setPath("/");
// Response 객체에 Cookie 추가
res.addCookie(cookie);
브라우저에서 쿠키 저장소에 자동으로 JWT가 저장된다.
Client에서 JWT통해 인증하는 방법
서버에서 API 요청을 받을 때마다 쿠키에 포함된 JWT를 찾아서 사용한다.
// HttpServletRequest 에서 Cookie Value : JWT 가져오기
public String getTokenFromRequest(HttpServletRequest req) {
Cookie[] cookies = req.getCookies();
if(cookies != null) {
for (Cookie cookie : cookies) {
if (cookie.getName().equals(AUTHORIZATION_HEADER)) {
try {
return URLDecoder.decode(cookie.getValue(), "UTF-8"); // Encode 되어 넘어간 Value 다시 Decode
} catch (UnsupportedEncodingException e) {
return null;
}
}
}
}
return null;
}
쿠키에 담긴 정보가 여러개 일 수 있어서
그 중 이름이 JWT가 담긴 쿠키의 이름과 동일한지 확인하여 JWT를 가져온다
이후 Client가 전달한 JWT위조 여부를 검증한다(Secret Key를 사용한다)
JWT유효기간도 확인
검증이 성공한다면
JWT에서 사용자 정보를 가져와서 확인하고
API를 요청한 Client에게 해당 데이터를 전달한다.
결국 세션저장소가 없이
Secret Key를 쿠키에 같이 전달해줌으로써
Client가 Cookie 저장소에 보관하고 있다가
서버에게 요청을 할 경우
JWT와 Secret Key를 확인 -> 유효기간 확인 -> 데이터처리 이다.
JWT는 누구나 평문으로 복호화가 가능하지만
Secret Key가 없다면 JWT 수정이 불가능하다(Read Only)
JWT 조회 사이트
'Spring' 카테고리의 다른 글
Spring Boot PostMan사용, JWT 인증,인가 (로그인, 로그아웃, 회원탈퇴) (1) | 2024.06.10 |
---|---|
Spring Security JWT 인증 방식과 Security 동작원리 (0) | 2024.06.05 |
스파르타 부트캠프 SpringBoot @Validation란 (0) | 2024.05.31 |
스파르타 부트캠프 Spring Master 3강 고아Entity 삭제(orphanRemoval) (0) | 2024.05.29 |
스파르타 부트캠프 Spring Master 3강 영속성 전이 (0) | 2024.05.29 |