SpringBoot/spring security
SpringBoot [스프링부트] Spring Security Oauth2 (6) Google Token 활용
SpringBoot [스프링부트] Spring Security Oauth2 (6) Google Token 활용
2022.05.25이전에는 google에 인증을 마치면 Session을 생성해서 사용자의 인증과 인가를 처리했습니다. 이번에는 google이 제공하는 API인 Access Code와 Access Token으로 서버의 JWT 토큰을 발급하여 인증과 인가를 처리해보겠습니다. 진행하면서 삽질을 많이 했는데 그 부분에 대해서도 작성하겠습니다. 간단한 순서도를 보겠습니다. 1. 사용자가 로그인 요청 2. 서버는 Google API Server의 로그인을 하는 URI로 리디렉션 3. 로그인 성공 시 설정한 redirect-uri로 리디렉션 진행하며, Access Token을 발급받을 수 있는 Authorization code를 쿼리 파라미터 넘겨줌 4. Authorization code를 활용해서 Access Token 발급 요청 ..
Springboot[스프링부트] Spring Security Basic(5) 동작 과정
Springboot[스프링부트] Spring Security Basic(5) 동작 과정
2022.05.13Spring Security의 Filter, Provider, Handler를 직접 구현해봤습니다. 이번에는 이러한 동작들이 실행되는 과정을 살펴보겠습니다. 위와 같은 이미지로 Security Basic(0)에서 한 번 다룬 적이 있습니다. 이번엔 어떤 과정을 거치는지 살펴보겠습니다. 저희가 Custom 하게 만든 CustomAuthenticationFilter를 포함해서 여러 가지 필터들이 있습니다. 필터들이 서로 연결돼 다음 필터를 호출하는 형태입니다. 그중에서 FilterChain을 상속받고, ThreadLocal로 ServletRequest, ServletResponse를 ApplicationFilterChain이 있습니다. 이것은 필터들의 시작점이며, 위에서 말씀드린 것처럼 필터를 호출해서 시작..
Springboot [스프링부트] Spring Sercurity Basic(4)
Springboot [스프링부트] Spring Sercurity Basic(4)
2022.02.12기존에 만들었던 Springboot 프로젝트에 SSL/HTTPS를 적용하겠습니다. 1. SSL certificate 만들기 ( cmd 창을 관리자 권한으로 실행해야 합니다.) java의 jdk가 있는 곳으로 이동합니다. where java // 명령어를 입력하면 java의 디렉터리 위치가 나옵니다. 3번째 디렉터리로 이동합니다. keytool -genkey -alias bootsecurity -storetype PKCS12 -keyalg RSA \ -keysize 2048 -keystore bootsecurity.p12 -validity 365 아래와 같이 값을 입력하고, 실행하시면 됩니다. java 디렉터리에서도 파일이 생성된 것을 확인할 수 있습니다. resources 밑에 위치합니다. 실제 운영할 ..
SpringBoot [스프링부트] Spring Security Baisc (3)
SpringBoot [스프링부트] Spring Security Baisc (3)
2022.01.27전 글에서 인증과 권한에 대해 다뤘고, 같은 권한을 가진 User는 다른 User의 리소스에 접근할 수 있었습니다. Interceptor를 통해서 인가 문제를 해결해보겠습니다. 1. Interceptor란? 인터셉터(Interceptor)는 스프링의 Spring Context(ApplicationContext) 기능입니다. 임의의 URI를 호출 시 DispatcherServlet에서 해당 Controller가 처리되기 전과 후에 발생하는 것을 처리할 수 있습니다. 즉 DispatcherServlet -> Interceptor -> Controller -> Interceptor -> ~~ 로 표현할 수 있습니다. 2. UserController 수정 @PostMapping("/character") publ..
SpringBoot [스프링부트] Spring Security Basic(2)
SpringBoot [스프링부트] Spring Security Basic(2)
2022.01.27프로젝트 개요 User는 회원 가입을 하고 로그인을 할 수 있다. User의 권한을 가진 사람만 캐릭터를 만들 수 있다. 캐릭터는 여러 개 생성 가능하다. Guest의 권한을 가진 사람은 /user과 /character에 접근이 불가능하다. 위의 요구사항을 토대로 만들겠습니다. 기본 개념들에 대한 설명은 생략하고, Security에 관한 내용만 설명하겠습니다. 1. User @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity @Getter public class User implements UserDetails { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Col..
SpringBoot [스프링 부트] Spring Security Basic (1) 프로젝트 생성
SpringBoot [스프링 부트] Spring Security Basic (1) 프로젝트 생성
2022.01.25프로젝트 생성 Intellij Ultimate 버전에서 진행합니다. File -> New -> Project SpringIitializr -> Next 설정 변경 후 Next 디펜던시 추가 후 Next 프로젝트 경로 확인 후 finish하여 프로젝트 생성 라이브러리를 다운로드 하는데 약간의 시간이 걸립니다. Application 실행하기 localhost:8080에 접속했을 때 아래와 같이 뜨면 정상 작동입니다. 앞으로 사용할 프로젝트를 만들었습니다. 다음부터 실습을 시작하겠습니다. 감사합니다. 모든 코드는 아래 링크에서 확인 가능합니다. https://github.com/rlaehdals/secuitybasic GitHub - rlaehdals/secuitybasic Contribute to rlaeh..