[Spring boot] OAuth(Google) & JWT Login (7) - JWT 인증 필터 + 그 외
·
Spring boot/Spring security
1. 서론  이전 포스팅(https://inthebleakmidwinter.tistory.com/6)에서 JWT를 생성하는 JwtTokenProvider와 이를 HTTP Cookie 형태로 포장시켜주는 JwtCookieProvider 객체에 대해 설명했다. 이번에는 Security Configuration을 시작으로 이 객체들을 이용해, 개발자가 커스텀한 필터(JwtAuthenticationFilter)를 거쳐 사용자를 검증하는 과정을 알아보자.2. 필터체인 설정에서 .addFilterBefore() 메서드SecurityConfig.java...@Configuration@EnableWebSecurity@RequiredArgsConstructorpublic class SecurityConfig { pri..
[Spring boot] OAuth(Google) & JWT Login (6) - JWT + 쿠키
·
Spring boot/Spring security
1. 서론  대부분의 웹/모바일 어플리케이션은 회원가입 및 로그인 서비스를 제공하고 있으며, 이는 각 개인이 어떤 어플리케이션 안에서 타인이 범접할 수 없는 공간을 가지고 있다는 것을 의미한다. 이에 따라 서비스 이용자는 계정 생성 및 접속에 있어서 이용자 본인이 맞다고 인증할 수 있어야 하고, 서비스 제공자는 인증이 완료된 이용자가 자신의 서비스를 안전하게 이용할 수 있도록 시스템을 구축해야한다. 즉, 개발자는 사용자가 안전하게 인증할 수 있도록 서비스를 구성하고, 인증된 사용자에게 적합한 자원 접근을 위한 권한을 인가하도록 구현해야 한다. 이 지향점의 중심에 JWT(JSON WEB Token)가 있다.  토큰은 웹 등의 어플리케이션에서 이용자 개인을 확인할 수 있게하는 수단 중 하나이다. 토큰에는 크..
[Spring boot] OAuth(Google) & JWT Login (5) - OAuth 동작 ②
·
Spring boot/Spring security
1. 서론  이전 포스팅(https://inthebleakmidwinter.tistory.com/4)에서 OAuth2LoginAuthenticationFilter가 4. Access Token 요청 ~ 7. 유저 정보 제공 과정을 처리한다고 설명했다. 개발자가 SecurityConfiguration을 커스터마이징할 때, oauth2Login()을 활성화시키면 OAuth2LoginConfigurer가 추가되어 이 configurer가 Security Filter Chain에 OAuth2LoginAuthenticationFilter를 추가한다. request는 Dispatcher Servlet에 도달하기전 이 필터(또는 다른 여러 필터)를 거치게 되며 지정된 redirect-uri 패턴으로 오는 reques..
[Spring boot] OAuth(Google) & JWT Login (4) - OAuth 동작 ①
·
Spring boot/Spring security
1. 서론  OAuth(Open Authorization)은 2006년 최초 출시된 인증을 위한 개방형 표준 프로토콜이다. 최초 출시 시기인 2006년 트위터와 Ma.gnolia가 주도하여 1.0버전을 개발하였으며, 이후 더욱 개선된 1.0a버전도 출시되었지만 일부 어플리케이션에서 보안성을 확보하지 못하는 사례가 존재했다. 기존보다 보안성을 강화하고 단순화시킨 2.0버전이 2012년에 등장하게 되었고, 지금까지 여러 어플리케이션에서 아주 유용하게 사용되고 있는 프로토콜이라 할 수 있겠다.   OAuth가 등장하기 이전에는, 특정 서비스에서 다른 서비스의 기능을 이용할 수 있게 하기 위해 다음과 같이 아주 위험한 방법을 사용하고 있었다. 어떤 회원이 현재 이용하고 있는 서비스를 A, A를 통해 이용하고 싶..
[Spring boot] OAuth(Google) & JWT Login (3) - Security 구성 및 동작
·
Spring boot/Spring security
1. 서론  본격적인 OAuth, JWT 구현에 앞서, 이전 포스팅들에서 생략하고 넘어갔었던 본 프로젝트의 Security Configuration과 이 구성이 적용되는 정확한 동작 과정을 파악해보고자 한다.2. Custom Security Configuration  Security Configuration은 Spring security 동작에 대한 환경 설정을 구성하고 있다. 즉, 인증과 인가에 대한 모든 흐름과 그에 대한 설정을 관리한다. 웹 서비스가 로드 될 때 Spring Container(https://ittrue.tistory.com/220)에 의해 관리된다.SecurityConfig.javapackage com.urcarcher.be.blkwntr.auth;import org.springfr..
[Spring boot] OAuth(Google) & JWT Login (2) - 자체 로그인 동작 구조
·
Spring boot/Spring security
1. 서론  Spring security의 SecurityContext 객체는 Authentication 객체(사용자 인증 정보)를 가지고 있으며, 이 사용자 인증 정보는 Authentication 객체 안에 UserDetails 또는 OAuth2User(소셜 로그인 시) 객체로 저장된다. 그렇다면 Spring security는 어떠한 내부 프로세스를 가지고 사용자 인증을 진행하는 걸까? 아울러 이는 어떻게 JWT와 연계되는가? 로그인과, 로그인 이후 진행되는 프로세스를 프로젝트 코드와 함께 살펴보자.2. 로그인 시(소셜X)AuthorizingController.java...@Log4j2@RestController@RequiredArgsConstructor@RequestMapping("/api/auth"..
[Spring boot] OAuth(Google) & JWT Login (1) - 프로젝트 기본 구조
·
Spring boot/Spring security
1. 서론  신한DS SW Academy에서 2차 프로젝트를 진행하며 구현했던 인증 및 로그인 파트를 리뷰해보고자 한다. Spring security는 뜯어볼수록 굉장히 치밀하고 정교하게 만들어진 Framework였기에, 처음 공부할 때 그 방대함에 조금은 위축됐었던 것 같다. 다소 부족하지만 서비스 제공을 상상하며 열심히 구현했던, 프로젝트의 해당하는 부분을 샅샅이 톺아보자.2. Authentication/Authorization Flow  자체 플랫폼에 대한 로그인의 경우, 해당 API 서버에서 DB를 통해 사용자를 검증한 후 자체 Access, Refresh Token을 발급한다. 소셜 로그인의 경우, 첫 로그인 요청 시 사용자는 구글 서버로 리다이렉트되고(Google 서버로부터 사용자 정보에 대한..