JWT 6

[ 알아보자 ] HTTP...그리고 JWT...

난 코더인가,,,,개발자인가...........................................난 그냥 말도 못하는 감자나부랭.......... HTTP- HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜이다.- 웹에서 이루어지는 모든 데이터 교환의 기초- 클라이언트 -> 서버 : Requests(요청)- 서버 -> 클라이언트 : Responses(응답)- HTTP는 상태는 없지만 세션은 있다...HTTP는 상태를 저장하지 않는다. 즉 무상태인것HTTP는 요청을 처리한 후 연결을 끊어버린다. 그렇기 때문에 서버에서 클라이언트의 상태 정보와 통신 상태가 남아있지않다.서버가 사용자의 로그인 상태를 알기 위해 사용하는 것 3가지 쿠키, 세션, 토큰 1. 쿠키(Cookie) 쿠키는 사이..

[ JWT를 활용한 Spring Security ] Access Token 재발급

5. AccessToken이 만료되었을때 - 만료응답을 클라이언트에 반환//토큰이 유효하지 않을 경우if (!jwtService.validateToken(jwt, userDetails.getUsername())) { response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Access token expired"); return;} 만료된 토큰을 받은 서버는 HTTP상태 코드와 함께 "Access token expired"메세지를 클라이언트에 반환  6. AccessToken이 만료되었을때 - 만료응답을 받은 클라이언트api.interceptors.response.use( response => response, async error => { ..

[ JWT를 활용한 Spring Security ] Refresh Token?Access Token?

Refresh Token?유효기간이 길다Access Token이 만료되어 갱신될 때만 사용한다.재발급에 관여하는 토큰 Access Token?유효기간이 짧다API 통신에 사용된다.접근에 관여하는 토큰 왜 이렇게 토큰을 두개로 나눌까?JWT는 탈취의 위험성이 있다!!토큰을 탈취당하면 탈취한 사람이 특정 권한에 대한 인증을 통과할 수도 있다....서버는 실제 주인과 탈취한 사람을 구분 못함그래서 토큰의 유효기간을 짧게 두는게 보안상 좋은데 유효기간이 짧으면 유효시간마다 로그인을 다시해야한다.이런 문제를 해결하기 위해 Access Token과 Refresh Token을 나눠두는 것!  토큰 발급과 인증 방식1. 로그인시에 서버가 Access Token과 Refresh Token을 동시에 발급2. 서버는 Ref..

[ JWT를 활용한 Spring Security ] JWT 토큰 생성

JWT? Json Web Token의 줄임말로 JSON 객체를 사용해 정보를 안전하게 전송하는 토큰 기반 인증 방식 Stateless 방식으로 서버가 클라이언트의 상태를 저장하지 않고, 클라이언트가 요청을 보낼때 제공한 JWT를 기반으로 인증을 처리무상태(stateless): 클라이언트와 서버 관계에서 서버가 클라이언트의 상태를 보존하지 않음을 의미장점 - 특정 DB/서버에 의존하지 않아도 인증 가능- 서버의 확장성이 높기 때문에 대량의 트래픽 발생 시에도 대처가 수월단점  - 클라이언트의 요청에 상대적으로 Stateful 보다 더 많은 데이터가 소모- 데이터 노출로 인한 보안적인 문제사용자 인증, 정보 교환에 사용유효 기간과 서명을 포함하여 변조되지 않았음을 보장 ⬇️⬇️ Stateless의 반대는??..

[ JWT를 활용한 Spring Security ] JWT토큰 인증 과정

JwtRequestFilter란?JwtRequestFilter는 JWT 토큰을 이용해 사용자를 인증하는 스프링 시큐리티 필터클라이언트가 서버에 API 요청을 보낼 때마다 이 필터가 실행되어 Authorization 헤더에 포함된 JWT 토큰을 검증 JwtRequestFilter는 클라이언트가 제공한 토큰이 유효한지 확인하고, 유효하다면 사용자의 인증 정보를 SecurityContext에 저장하여 인증 상태를 유지한다. JWT 토큰 인증 과정 1. 요청의 Authorization 헤더에서 JWT 토큰 추출final String authorizationHeader = request.getHeader("Authorization");if (authorizationHeader != null && authoriza..