본문 바로가기

Spring Security

(6)
Spring Security를 활용한 OAuth 2.0 로그인 구현 이번 포스팅에서는 OAuth 2.0을 이용한 소셜 로그인을 소개해보려고 합니다.여러가지 소셜 사이트가 있지만, Google, FaceBook, Naver를 활용하여 소셜 로그인을 진행하려고 합니다.소셜 로그인의 경우 oauth2-client 라이브러리를 활용하여 동작이 이루어지게 되고 어떤 원리로 소셜 로그인이 가능한지 알아보도록 하겠습니다.  또한, 실제 토이프로젝트를 통해 구현된 코드로 보여드리도록 하겠습니다. 1. OAuth 2.0 이란??먼저, 간단하게 OAuth에 대해서 알아보도록 하겠습니다.예를들어, 원티드 홈페이지에 접속을 하여 회원가입 버튼을 누르게 되면 다른 소셜 사이트의 정보로 회원가입을 하게 하는 것을 볼 수 있습니다. 본인이 원하는 소셜 사이트를 선택하여 회원가입을 진행하게 되면, ..
Spring Security를 활용한 JWT 로그인 구현(Access Token, Refresh Token) 이번 포스팅에서는 Spring Security를 활용하여 폼 로그인 방식이 아닌 Rest Full API로 이루어진 환경에서 JWT 토큰을 이용하여 로그인 후 인증, 인가하는 방법을 공부해보려고 합니다. 1. JWT 1 - 1. JWT란? JWT는 Json Web Token의 줄임말로 Json형식으로 데이터를 주고 받는 토큰을 의미합니다. JWT는 3개의 구조로 되어있는데, 헤더(Header), 내용(Payload), 서명(Signature)로 되어있습니다. 1) 헤더(Header) : 헤더는 토큰의 유형과 서명 알고리즘이 명시됩니다. { "alg": "HS512", // 해싱 알고리즘 지정 "typ": "JWT" // 타입을 지정 } 2) 내용(Payload) : 토큰에 담을 정보를 의미하는데, 정보 ..
Spring Security를 활용한 Form Login 구현 이번 포스팅에서는 Spring Security를 활용하여 가장 기본이 되는 Form Login 방식을 구현해보려고 합니다. 1. Spring Security 기본 세팅 1 - 1. Spring Security 라이브러리 추가 implementation 'org.springframework.boot:spring-boot-starter-security' testImplementation 'org.springframework.security:spring-security-test' 1 - 2. Spring Security 코드 세팅 1 - 2 - 1. BCryptPasswordEncoder 설정 BCryptPasswordEncoder의 encode()를 이용하여 비밀번호를 암호화 할때 사용합니다. @Config..
[Spring Security] SecurityContextPersistenceFilter 이해 이번 포스팅에서는 SecurityContext 객체의 생성, 저장, 조회하는 역할을 담당하는 SecurityContextPersistenceFilter에 대해서 공부해 보도록 하겠습니다. 이 필터같은 경우 ThreadLocal에 인증 후 세션에서 가져온 SecurityContext를 넣어주는 역할도 하기때문에 SecurityContextHolder.getContext().getAuthentication()을 통해 어디서든지 인증한 사용자의 정보를 가져오는지 공부해 볼 수 있습니다. SecurityContextPersistenceFilter의 동작방식을 살펴보면 아래와 같은 Flow로 진행되는 것을 알 수 있습니다. 이 필터에 동작방식을 코드로 보기위해 어떤 클래스가 사용되고 있는지 알아보도록 하겠습니다...
[Spring Security] 기본 API 및 Filter 이해(2) 이번 포스팅에서는 스프링 시큐리티를 크게 3가지로 알아보려고 합니다. RememberMeAuthenticationFilter 동작원리 AnonymousAuthenticationFilter 동작원리 동시 세션 제어 필터(SessionManagementFilter, ConcurrentSessionFilter) 동작원리 RememberMeAuthenticationFilter 동작원리 RememberMeAuthenticationFilter 필터는 세션에서 응답값으로 보내준 RememberMe 쿠키값을 사용하여 세션이 만료되거나 브라우저가 종료된 후에도 사용자를 기억할 수 있도록 도와주는 필터입니다. RememberMe와 관련된 API는 아래와 같습니다. @Configuration @EnableWebSecurit..
[Spring Security] 기본 API 및 Filter 이해(1) 이번 포스팅에서는 스프링 시큐리티를 크게 3가지로 알아보려고 합니다. Spring Security 의존성 주입 및 보안기능 UserNamePasswordAuthenticationFilter 동작원리 LogoutFilter 동작원리 Spring Security 의존성 주입 및 보안기능 먼저 의존성을 추가하기 위해 아래와 같이 코드를 추가해줍니다. (Gradle 기준) implementation 'org.springframework.boot:spring-boot-starter-security' 의존성을 주입하고 서버를 실행하게 되면 아래와 같은 일들이 자동으로 일어나게 됩니다. 시큐리티의 초기화 작업 및 보안설정이 이루어지게 됩니다. 별도의 설정을 하지 않아도 기본적인 보안기능이 현재 시스템에 적용됩니다. ..