SpringbootSecurity 17

Springboot/현제 진행중인 프로젝트에 AOP처리해보기/@ControllerAdvice사용

org.springframework.boot spring-boot-starter-validation 2.4.4 위 maven은 2.4.4 버전이다. porm.xml에 의존성 추가. validation 체크 관련 어노테이션은 해당 블로그가 굉장히 잘 돼있습니다. 참고하시면 좋을 것 같아요!. https://bamdule.tistory.com/35 [Spring Boot] @Valid 어노테이션으로 Parameter 검증하기 java.validation의 @Valid 어노테이션 사용법 정리 글입니다. Spring Boot 라이브러리에서 기본적으로 탑재된 기능이며 따로 dependency해 줄 필요가 없습니다. Spring Boot Version은 2.2.2.RELEASE 입니다. 1. j.. bamdule...

Springboot 2021.12.11

SpringbootSecurity/ JWT 서버 구축 최종

저번 포스팅과 연결돼 있습니다. 저번 포스팅에서 JWT을 만들어서 응답을 해주는 것까지 했었는데 response해더에 Authorization키에 벨류에 JWT토큰이 담겨져서 응답된 것을 확인할 수 있었습니다. 그럼 이제 클라이언트가 자신의 개인정보에 접근을 하기 위해서 다시 로그인을 하는 것이 아닌 JWT을 이용해서 해당 개인정보에 접근을 하게 되면 전자서명을 통해서 개인정보에 접근할 수 있게 구현을 하면 된다. 그러기 위해선 jwt필터를 만들어야 한다. 포스트맨으로 테스트를 해보면 해당 필터를 타고 header에 Authorization키의 벨류 값을 확인해 볼 수 있다. 그럼 여기에다가 jwtheader를 넘기면 된다. 그럼 필터를 등록해서 테스트해보자 포스트맨으로테스트하면 잘 나온다 그럼 그럼 이..

SpringbootSecurity 2021.10.05

SpringbootSecurity/JWT토큰만들기

이번 포스팅은 저번 포스팅과 연결돼 있습니다. com.auth0 java-jwt 3.10.2 위 dependency는 JWT토큰을 만들어주는 라이브러리이다. pom.xml에서 설정해 주기!! 어번 포스팅에서 클라이언트가 로그인 요청이 왔을 때 JWT서버에서 해야 하는 설정을 해줬다면 이제 요청이 끝나고 응답을 해줄 때 JWT서버에서 해줘야 할 설정들을 포스팅해보겠습니다. 이전 포스팅에서 attemptAuthentication(요청) 함수가 끝이 나고 successfulAuthentication함수가 순차적으로 실행되는데 successfulAuthentication함수에서 JWT토큰을 만들어서 응답을 해주기 전까지 포스팅을 했습니다. 이번 포스팅에서 응답을 하는 것을 포스팅해보겠습니다. 주석에 주요 내용들..

SpringbootSecurity 2021.10.04

SpringbootSecurity/JWT 사용한 로그인(2)

이번 포스팅은 저번 포스팅과 연결돼 있습니다. 실제 로그인을 해보기전에 테스트를 해보면서 이해도를 올려보자 포스트맨으로 위와같이 요청을 할 때 아래 함수가 실행되는데 이때 request에 담겨있는 데이터가 어떻게 들어오는지 확인하기 위해서 테스트를 해본다. request에 담겨있는 username과 password가 들어온다. 근데 만약에 데이터를 json으로 보내면 어떻게될까? json형식의 데이터가 오는 것을 알 수 있다. 일반적으로 웹 브라우져에서만 로그인 요청이 오지는 않는다. 안드로이드나 자바스크립트로 json데이터를 주고받을 수도 있기 때문에 위 json데이터를 파싱 해보자 위와 같이 해주면 json데이터를 파싱 해주는데 파싱 된 데이터를 user오브젝트에 담았다. 이제 로그인 시도를 하기 위..

SpringbootSecurity 2021.10.01

SpringbootSecurity/JWT 사용한 로그인(1)

이번 포스팅은 저번 포스팅과 연결돼 있습니다. 저번에는 가장의 토큰을 JWT라고 가정을 하고 테스트를 해보았고 이제는 진짜 JWT를 구현해서 회원가입과 로그인을 진행하는 포스팅이 될 것 같습니다. 기본적으로 SpringbootSecurity서버는 Security를 통한 로그인과 회원가입이 이루어져야하기때문에 설정들을 다뤄줍니다. 왜 이렇게 하는지에 대한 내용은 자세한 내용은 이전 OAuth로그인포스팅에 자세히 나와있습니다. 왜 이렇게 하는지에 대한 설명은 이전 Seucurity포스팅에 다 담겨있습니다!. 그럼 위와같은 Service가 언제 동작을 하냐면 /login으로 요청이 들어오면 Service가 동작을 한다. 왜냐하면 SpringSecurity가 기본적인 login주소가 /login이기 때문이다. ..

SpringbootSecurity 2021.10.01

SpringbootSecurity/JWT임시 토큰 만들어서 테스트

이 포스팅은 저번 포스팅과 이어져 있습니다. 저번 포스팅에서 만들었던 MyFilter1에 다음과 같이 filter를 설정해 줬다 요청이 POST로 들어오면 동작을 하도록 해 주고 포스트맨으로 POST 요청을 해보자 그럼 이제 하나의 가정을 해보자 우리가 "cos"라는 토큰을 만들었다고 가정을하고 이 cos라는 토큰이 넘어오면 인증이 되도록하고 그게 아니면 더 이상 filter를 못 타게 해서 컨트롤러로 진입을 할 수 없도록 만들어 볼 것이다. 위와 같이 잘 동작하는 것을 볼 수 있다. dochain을 타지 못하면 프로세스가 종료되기 때문에 cos라는 토큰이 없으면 프로세스가 종료된다. 그럼 이 filter를 Security가 동작하기 전에 걸어야 가장 먼저 인증을 해낼 수가 있다. 위와 같이 Securi..

SpringbootSecurity 2021.09.28

SpringbootSecurity/JWT Filter 등록 테스트

이번 포스팅은 저번 포스팅과 연결된 포스팅입니다. 이번 포스팅에서는 저번에 작업하던 JWT서버 만드는 프로젝트에서 필터를 하나 만들어 보겠습니다. MyFilter1이라는 클래스를 만들어서 아래와 같이 필터의 역할을 하는 파일을 만들었다. 그리고 SecurityConfig에서 Security설정을 위와 같이 해주는 방법도 있지만 굳이 그렇게 하는 것보다 좀 더 효율적인 방법이 있다. 필터 설정을 해주는 클래스를 하나 더 만드는 것이다. 위와 같이 등록돼있으면 필터가 잘 작동한다. setOrder는 필터가 실행되는 순서를 설정하는 것이다. 위와 같이 하나의 필터를 더 만들어서 실행을 해보면 setOrder의 설정 순서대로 작동하는 것을 알 수 있다. 그럼 위와 같은 방식의 filter와 SecurityCon..

SpringbootSecurity 2021.09.28

SpringbootSecurity/JWT Bearer 인증방식

JWT Bearer인증방식에 대해서 포스팅을 하겠습니다. 본 포스팅은 저번 포스팅과 연결돼있습니다. http.csrf.disable설정의 의미는 기본적으로 웹서버에서는 자바스크립트의 공격을 방어하기 위해서 크로스 오리진정첵을 운영하고 있는데 그 설정을 없앤다는 것이다. 바로 밑에 http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) 는 Stateless를 사용한다는 것은 session을 사용하지 않겠다는 것이다. 기본적인 웹은 stateless를 사용하는데 statfull처럼 느껴지도록 session과 cookie를 사용하는데 jwt서버는 session을 사용하지 않기 때문에 사용하지 않도록 설정해 준 것이다. fo..

SpringbootSecurity 2021.09.23

SpringbootSecurity/JWT를 위한 Security설정

지금 현제 하고 있는 프로젝트는 Security를 기반으로 만들어졌기 때문에 JWT를 위한 Security설정을 해보겠다. 모델을 하나 만든다. 이제 yml설정에서 create로 바꿔주고 db에 테이블을 하나 만들면 된다. Security설정 기본적으로 Seicurity설정은 다음과 같이 해준다. 그리고 몇가지 설정을 추가적으로 더 해줘야 한다. 서버 설정 추가 corsFilter는 SpringFramwork가 들고 있는 함수를 사용한다. /api/로 들어오는 모든 주소는 이 config설정을 따라라고 설정을 해주고 return 해준다. 그리고 위와 같이 걸기만 하면 의미가 없고 filter에 등록을 해줘야 한다. 다시 SecurityConfig클래스로 가서 Security설정을 만져 준다. 이렇게 시큐..

SpringbootSecurity 2021.09.07