728x90
반응형

2022/2022-1 8

[SpringBoot] SpringBoot + SpringSecurity + JWT + Redis (회원가입 / 로그인 구현) (2)

https://wonsjung.tistory.com/453 [SpringBoot] SpringBoot + SpringSecurity + JWT (회원가입 / 로그인 구현) 본 프로젝트를 진행할 때 처음에는 SpringSecurity + Oauth2를 이용한 로그인을 구현하려 했으나 방향성이 바뀌어 일반적인 사용자 정보를 입력한 회원가입 + 로그인을 구현하게 되었다. 회원가입 및 wonsjung.tistory.com 위 게시글은 지난 게시글로 Spring Security로 JWT를 발급하는 과정까지만 작성했었다. 오늘 작성하는 현재의 글은 Access Token의 만료 시간이 다 되었을 경우 Refresh Token이 유효한지 검사하고 유효하다면 Access Token을 재발급하는 과정이다. 또한, 전 게..

2022/2022-1 2022.08.18

[SpringBoot] SpringBoot + SpringSecurity + JWT (회원가입 / 로그인 구현)

본 프로젝트를 진행할 때 처음에는 SpringSecurity + Oauth2를 이용한 로그인을 구현하려 했으나 방향성이 바뀌어 일반적인 사용자 정보를 입력한 회원가입 + 로그인을 구현하게 되었다. 회원가입 및 로그인 모두 클라이언트로부터 API를 전송받는 방식으로 진행하였다. 1. Spring Security 처리 과정 공부할 때 작성했던 Session 기반 로그인과정과 JWT 기반 로그인과정 글이 있다. 본 게시글과 차이점은 아래 게시글들은 구글링으로 다른 분들의 다양한 블로그 글들을 참고하여 따라해본 예제이고, 현재 게시글은 거기에 더해 실제 프로젝트에 적용하게 된 구현코드이다. 아래 게시글에서는 현재 스프링에서 지원하지 않는 인터페이스도 존재하여 그 부분까지 수정하였다. https://wonsjun..

2022/2022-1 2022.08.10

로그인 처리 - 필터 / 인터셉터 (1) (필터 개념 및 예제 코드)

로그인 기능이 존재하는 웹 사이트 내에서는 인증 뿐만 아니라 인가 기능이 필요하다. 인가 기능이란, 인증이 된 사용자만 특정 웹 페이지에 접근한 기능이다. 예를 들어보자면, 쇼핑몰 웹 사이트 내에서 로그인을 하지 않은 사용자는 상품을 주문할 수 없다. 로그인을 한 사용자만 상품을 주문할 수 있다. 따라서, 등록 / 수정 / 삭제 / 조회 등등 모든 컨트롤러 로직에 공통으로 로그인 여부를 확인해야 한다. 그럼 로그인 여부를 체크하는 로직을 하나 하나 모든 페이지 내에 등록해야하는 것일까? 만약 그렇게 한다면 향후 로그인과 관련된 로직이 변경될 때마다 모든 로직을 수정해야할 수도 있다. 이렇게 애플리케이션 여러 로직에서 공통으로 관심이 있는 것을 공통 관심사(cross-cutting-concern)라고 한다..

2022/2022-1 2022.08.07

[SpringBoot] SpringBoot + SpringSecurity + JWT 구현하기

현대 웹 서비스에서는 토큰을 사용하여 사용자들의 인증 작업을 처리하는 것이 가장 좋은 방법이다. 본 프로젝트에서 요구하는 것 또한 JWT + Oauth2 구현이며 이번 글은 토큰 기반의 인증 시스템에서 주로 사용하는 JWT(Json Web Token)에 대해 SpringBoot와 Spring Security 기반으로 제작한다. 1. Spring Security 처리 과정 기본적으로 Spring Security는 Session 기반으로 동작하고 그에 대한 글은 전에 게시한 적이 있다. 자세한 처리과정과 구현은 아래 게시글에서 확인할 수 있다. https://wonsjung.tistory.com/443 [SpringBoot] Spring Security 처리 과정 1. Spring Security 처리 과정..

2022/2022-1 2022.07.20

JWT(Json Web Token)란?

JWT 란? Json Web Token의 약자로 모바일이나 웹의 사용자 인증을 위해 암호화된 토큰을 의미한다. JWT 정보를 request에 담아 사용자의 정보 열람, 수정 등 개인적인 작업 등을 수행할 수 있게 한다. JWT는 토큰 자체를 정보로 사용하는 Self-Contained 방식으로 정보를 안전하게 전달한다. JWT는 아래의 로직을 따라서 처리된다. 애플리케이션이 실행될 때, JWT를 static 변수와 로컬 스토리지에 저장하게 된다. static 변수에 저장되는 이유는 HTTP 통신을 할 때마다 JWT를 HTTP 헤더에 담아서 보내야하는데, 이를 로컬 스토리지에서 계속 불러오면 오버헤드가 발생하기 때문이다. 클라이언트에서 JWT를 포함해 요청을 보내면 서버는 허가된 JWT인지를 검사한다. 또한..

2022/2022-1 2022.07.19

[인증/인가] Token(토큰) 기반 인증과 Session(세션) 기반 인증

HTTP의 대표적 특성 중 하나는 Stateless 특성이다. 때문에 각 통신의 상태는 저장되지 않는다. 하지만 우리가 사용하는 많은 웹 서비스는 HTPP 프로토콜 기반으로 통신되지만 왠지 나의 정보를 기억하고 있는 듯하다. 바로 Session(세션)과 토큰(Token) 덕분이다. 유저가 로그인을 시도할 때 서버 상에서 일치하는 유저 정보를 찾았다면 인증(Authentication) 확인의 표시로 세션이나 토큰을 발급/전달 해준다. 그럼 웹 브라우저 측에서 해당 세션/토큰 정보를 받아 간직하고 있다가 새로운 request를 보낼 때마다 인가(Authorization)를 위해 해당 세션/토큰을 함께 보낸다. 세션과 토큰 모두 존재 목적은 거의 같지만 차이점은 명확하다. 세션은 데이터베이스 서버에 저장되며,..

2022/2022-1 2022.07.14

[SpringBoot] Spring Security 처리 과정

1. Spring Security 처리 과정 Spring Security의 처리 과정은 기본적으로 Session을 활용한 구현 방식이다. 후에 Token 기반 구현 방식도 공부하고 업로드 할 예정이다. 1. 사용자가 로그인 정보와 함께 인증 요청 (HttpRequest) 2. AuthenticationFilter가 요청을 가로챈다. 이 때 가로챈 정보를 통해 UsernamePasswordAuthenticationToken 객체(사용자가 입력한 데이터를 기반으로 생성, 즉 현상태는 미검증 Authentication) 생성 3. ProviderManager(AuthenticationManager 구현체)에게 UsernamePasswordAuthenticationToken 객체를 전달한다. 4. Authent..

2022/2022-1 2022.07.13

[SpringBoot] Spring Security

프로젝트를 진행하기 앞서 사전 지식 중 하나인 Spring Security가 무엇인지 알아보는 글. Spring에서 구현하는 대부분의 로그인 과정은 Spring Security를 기반으로 진행되기 때문에 한 번 할 때 제대로 해두는 것이 후에도 좋을 것 같다. 대부분의 시스템에서는 회원의 관리를 하고 있고, 그에 따른 인증(Authentication)과 인가(Authorizarion)에 대한 처리가 요구된다. Spring에서는 Spring Security라는 별도의 프레임워크에서 관련된 기능을 제공하고 있다. 1. [Spring Security] Spring Security는 Spring 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크이다. Spring Securit..

2022/2022-1 2022.07.12
728x90
반응형