Spring security/02.JWT활용
-
이전 포스트에서 auth-token을 이용한 인증 처리에 대해서 살펴보았다. 이번 포스트에서는 refresh token이라는 개념에 대해서 살펴보자. jwt auth token의 문제점과 보완 jwt auth token의 문제점JWT는 세션을 사용할 수 없는 REST 환경에서 세션 처럼 인증 정보를 유지하기 위해서 사용된다. 세션의 경우는 사용자의 활동에 따라서 유효 기간이 연장되지만 토큰의 경우는 만들어진 시점에 이미 유통 기한이 정해져있다. 토큰은 유효기간이 자체적으로 연장되지는 않는다. 따라서 장기간 사용해야 하는 경우는 번거로움이 발생할 수 있다.그럼 대안으로는 유효기간을 길~~게 가져갈 수 있다. 하지만 이때의 문제는 해커에 의한 토큰 탈취이다. 요청때마다 클라이언트에서 서버로 전송되는 이 토..
[JWT] Refresh 토큰 개념이전 포스트에서 auth-token을 이용한 인증 처리에 대해서 살펴보았다. 이번 포스트에서는 refresh token이라는 개념에 대해서 살펴보자. jwt auth token의 문제점과 보완 jwt auth token의 문제점JWT는 세션을 사용할 수 없는 REST 환경에서 세션 처럼 인증 정보를 유지하기 위해서 사용된다. 세션의 경우는 사용자의 활동에 따라서 유효 기간이 연장되지만 토큰의 경우는 만들어진 시점에 이미 유통 기한이 정해져있다. 토큰은 유효기간이 자체적으로 연장되지는 않는다. 따라서 장기간 사용해야 하는 경우는 번거로움이 발생할 수 있다.그럼 대안으로는 유효기간을 길~~게 가져갈 수 있다. 하지만 이때의 문제는 해커에 의한 토큰 탈취이다. 요청때마다 클라이언트에서 서버로 전송되는 이 토..
2024.12.02 -
이번 시간에는 JWT를 Spring Security에서 사용하기 위해 필요한 내용들을 작성해보자. 필터 작성 Spring의 FilterSpring Security는 전반적으로 Filter 기반으로 동작하기 때문에 적절한 Filter를 구성해서 JWT를 사용하는 것이 가장 권장된다.Spring에서 Filter를 만들 때는 통상 OncePerRequestFilter를 상속받아서 구현한다. OncePerRequestFilter는 forward나 include를 포함하는 요청 처리 과정에서 딱 1번만 처리되는 것이 보장되는 필터이다. 이 클래스에는 doFilterInternal과 shouldNotFilter메서드가 제공되므로 필요한 기능을 여기에 제공하면 된다.@RequiredArgsConstructor..
[JWT]JWT를 위한 Spring Security 설정이번 시간에는 JWT를 Spring Security에서 사용하기 위해 필요한 내용들을 작성해보자. 필터 작성 Spring의 FilterSpring Security는 전반적으로 Filter 기반으로 동작하기 때문에 적절한 Filter를 구성해서 JWT를 사용하는 것이 가장 권장된다.Spring에서 Filter를 만들 때는 통상 OncePerRequestFilter를 상속받아서 구현한다. OncePerRequestFilter는 forward나 include를 포함하는 요청 처리 과정에서 딱 1번만 처리되는 것이 보장되는 필터이다. 이 클래스에는 doFilterInternal과 shouldNotFilter메서드가 제공되므로 필요한 기능을 여기에 제공하면 된다.@RequiredArgsConstructor..
2024.12.02 -
이제 스프링 Boot에서 JWT를 사용해서 토큰을 생성하는 방법에 대해서 알아보자. 프로젝트 구성 의존성JWT를 자바에서 사용하기 위해서는 여러가지 라이브러리가 있는데 여기서는 jjwt라는 녀석을 사용해보자. 이를 위해 다음의 의존성을 추가한다. 이 녀석의 역할은 토큰은 base64로 인코딩 하거나 signature를 만들고 검증하는 역할등을 수행한다. io.jsonwebtoken jjwt-api 0.12.6 io.jsonwebtoken jjwt-impl 0.12.6 runtime io.jsonwebtoken jjwt-jackson 0.12.6 runtime application.ymlapplication.properties에는 사용자 정의 속..
[JWT]프로젝트 구성 및 토큰 확인이제 스프링 Boot에서 JWT를 사용해서 토큰을 생성하는 방법에 대해서 알아보자. 프로젝트 구성 의존성JWT를 자바에서 사용하기 위해서는 여러가지 라이브러리가 있는데 여기서는 jjwt라는 녀석을 사용해보자. 이를 위해 다음의 의존성을 추가한다. 이 녀석의 역할은 토큰은 base64로 인코딩 하거나 signature를 만들고 검증하는 역할등을 수행한다. io.jsonwebtoken jjwt-api 0.12.6 io.jsonwebtoken jjwt-impl 0.12.6 runtime io.jsonwebtoken jjwt-jackson 0.12.6 runtime application.ymlapplication.properties에는 사용자 정의 속..
2024.11.26 -
이번 포스트에서는 JWT의 개념과 기본 동작에 대해 살펴보자. Session Cookie와 JWT를 통한 인증의 차이 Session Cookie 활용session cookie는 전통적인 server의 인증 방식이다.클라이언트가 id/pass를 가지고 서버로 로그인 요청을 한다. 서버는 db server를 이용해 해당 사용자가 valid한지 점검하고 결과를 반환한다.로그인 성공 시 서버는 session store에 세션 공간을 할당하고 이 공간에 접근할 수 있도록 session cookie를 response로 내려보낸다.작업을 요청할 때 client는 session cookie를 request에 포함시켜 서버로 전송한다.서버는 이 cookie 값으로 로그인한 적이 있는지 session store에 확인..
[JWT]JWT 개요이번 포스트에서는 JWT의 개념과 기본 동작에 대해 살펴보자. Session Cookie와 JWT를 통한 인증의 차이 Session Cookie 활용session cookie는 전통적인 server의 인증 방식이다.클라이언트가 id/pass를 가지고 서버로 로그인 요청을 한다. 서버는 db server를 이용해 해당 사용자가 valid한지 점검하고 결과를 반환한다.로그인 성공 시 서버는 session store에 세션 공간을 할당하고 이 공간에 접근할 수 있도록 session cookie를 response로 내려보낸다.작업을 요청할 때 client는 session cookie를 request에 포함시켜 서버로 전송한다.서버는 이 cookie 값으로 로그인한 적이 있는지 session store에 확인..
2024.11.25 -
이번 포스트에서는 기존의 예제에 refresh token 개념을 추가해보자. Server Side 추가/수정 먼저 Server Side에서 추가 또는 수정해야 할 내용들이다. JwtUtil refresh token을 발행하기 위한 메서드를 추가한다. /** * Refresh 토큰을 생성한다 * 이때는 인증을 위한 정보는 유지하지 않고 유효기간을 auth-token의 5배로 잡았다. * @return */ public String createRefreshToken() { return create(null, "refreshToken", expireMin * 5); } UserService 로그인 시 auth-token과 함께 refresh-token도 생성한다. 이 정보는 사용자 계정과 함께 DB에 저장되는..
JWT를 이용한 인증 처리 6. Refresh Token 구현이번 포스트에서는 기존의 예제에 refresh token 개념을 추가해보자. Server Side 추가/수정 먼저 Server Side에서 추가 또는 수정해야 할 내용들이다. JwtUtil refresh token을 발행하기 위한 메서드를 추가한다. /** * Refresh 토큰을 생성한다 * 이때는 인증을 위한 정보는 유지하지 않고 유효기간을 auth-token의 5배로 잡았다. * @return */ public String createRefreshToken() { return create(null, "refreshToken", expireMin * 5); } UserService 로그인 시 auth-token과 함께 refresh-token도 생성한다. 이 정보는 사용자 계정과 함께 DB에 저장되는..
2022.05.05 -
이제까지 테스트를 통해서 검증했지만 그래도 클라이언트를 붙여봐야 웬지 동작이 잘 이해될것 같아서 화면을 만들고 동작을 테스트 해보자. 기억해줄 내용은 로그인 성공 후 @ResponseBody를 통해서 서버는 클라이언트에게 정보를 내려보내주고 클라이언트는 서버로 정보 요청 시 header에 jwt-auth-token이라는 이름으로 토큰을 전달해준다는 점이다. 클라이언트는 전달받은 토큰을 session storage에 저장해두자. 클라이언트 작성 화면 구성 간단한 화면 구성이고 ajax를 사용하기 위해서는 axios가 사용 되었다. jwt test 토큰 유효기간 상태 정보 이제 javascript 영역에서 이벤트를 처리하면서 ajax 요청을 처리해보자. javascript 처리 먼저 화면의 요소들을 설정하기..
JWT를 이용한 인증 처리 4이제까지 테스트를 통해서 검증했지만 그래도 클라이언트를 붙여봐야 웬지 동작이 잘 이해될것 같아서 화면을 만들고 동작을 테스트 해보자. 기억해줄 내용은 로그인 성공 후 @ResponseBody를 통해서 서버는 클라이언트에게 정보를 내려보내주고 클라이언트는 서버로 정보 요청 시 header에 jwt-auth-token이라는 이름으로 토큰을 전달해준다는 점이다. 클라이언트는 전달받은 토큰을 session storage에 저장해두자. 클라이언트 작성 화면 구성 간단한 화면 구성이고 ajax를 사용하기 위해서는 axios가 사용 되었다. jwt test 토큰 유효기간 상태 정보 이제 javascript 영역에서 이벤트를 처리하면서 ajax 요청을 처리해보자. javascript 처리 먼저 화면의 요소들을 설정하기..
2022.04.28 -
다음으로 JwtUtil을 사용할 UserService와 JwtInterceptor를 만들어보자.이번에 작성해볼 예제의 전체적인 동작은 아래와 같다.UserService에서는 인증된 사용자를 대상으로 /api/info를 통해서 어떤 정보를 반환하는 서비스를 한다. 이때 인증 체크를 위해서는 JwtInterceptor를 거치게 처리했다.각 단계별 동작은 아래와 같다./jwt/login을 호출한다. 이때는 인증이 필요 없으므로 Interceptor를 거치지 않는다.UserService를 통해서 로그인 가능한 사용자인지 확인한다.로그인 가능하다면 JWTUtil을 통해 토큰을 생성하고 반환한다.브라우저는 전달받은 토큰을 로컬의 브라우저에 저장한다./api/info를 호출하면서 토큰을 전달한다. 이 api는 인증이..
JWT를 이용한 인증 처리 3다음으로 JwtUtil을 사용할 UserService와 JwtInterceptor를 만들어보자.이번에 작성해볼 예제의 전체적인 동작은 아래와 같다.UserService에서는 인증된 사용자를 대상으로 /api/info를 통해서 어떤 정보를 반환하는 서비스를 한다. 이때 인증 체크를 위해서는 JwtInterceptor를 거치게 처리했다.각 단계별 동작은 아래와 같다./jwt/login을 호출한다. 이때는 인증이 필요 없으므로 Interceptor를 거치지 않는다.UserService를 통해서 로그인 가능한 사용자인지 확인한다.로그인 가능하다면 JWTUtil을 통해 토큰을 생성하고 반환한다.브라우저는 전달받은 토큰을 로컬의 브라우저에 저장한다./api/info를 호출하면서 토큰을 전달한다. 이 api는 인증이..
2022.04.28