security 11

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

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

SpringbootSecurity 2021.10.01

SpringbootSecurity/JWT Filter 등록 테스트

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

SpringbootSecurity 2021.09.28

SpringbootSecurity/JWT를 위한 Security설정

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

SpringbootSecurity 2021.09.07

SpringbootSecurity/JWT 프로젝트 세팅 (yml설정포함)

이제 드디어 JWT서버를 만들어보는 프로젝트를 만들어 본다. https://mvnrepository.com/ mvnrepository에서 JWT를 사용하기 편리하게 해주는 라이브러리를 다운로드한다. 이 라이브러리를 쓰면 base64로 인코딩 디코딩 작업과 HS256으로 암호화는 작업을 직접 해야 하는데 아주 간편하게 해 준다. 이 라이브러리까지 porm.xml에 추가해주면 기본적인 프로젝트 수정은 끝났다. yml설정 server: port: 8080 servlet: context-path: / encoding: charset: UTF-8 enabled: true force: true spring: datasource: driver-class-name: org.mariadb.jdbc.Driver url: ..

SpringbootSecurity 2021.09.07

SpringbootSecurity/Springboot로 네이버 로그인 해보기 (yml에서 provider 설정하기)

저번 포스팅에서 이어갑니다. provider OAuth2-Client라는 라이브러리를 사용하고 있는데 OAuthClient를 재공해 주는 provider 있는데 Spring은 구글, 페이스북, 트위터 등등을 제공해준다. 그럼 당연히 네이버나 카카오같은 각 나라마다의 포털사이트를 Spring을 다 제공해주기엔 너무 많기 때문에 대표적인 것만 있는 것이다. 그럼 이런 각 나라마다 포털사이트의 api를 사용하려면 그 포털사이트의 문서를 봐야 사용할 수 있다. 그럼 naverAPI를 받아오기 전에 yml설정부터 하면서 이해해야할 개념이 있다. 기본적으로 스프링 시큐리티가 OAuth2로그인을 사용할 때 OAuth2를 사용하기 위한 여러 가지 방식이 있다. Code방식 Client CredentialGrantTyp..

SpringbootSecurity 2021.09.01

SpringbootSecurity/Springboot로 구글로그인 해보기(1)/구글 로그인 준비(설정)

이론적인 부분은 전 Security version.1에 서 다 설명돼있습니다. 구글 googleapi로 들어간다 새 프로젝트를 만든다 만든 프로젝트를 선택한 후에 OAuth동의 화면으로 간다 앱 이름 설정하고 Oauth 동의한 후에 사용자 인증 정보로 이동한다. 위와 같은 경로로 들어간다. 승인된 리다이렉션 URI 구글 로그인을 완료가 되고 나면 구글 서버 쪽에서 우리 쪽으로 코드를 돌려준다. 그럼 우리는 이 코드를 받아서 다시 코드를 통해서 액세스 토큰을 요청을 한다. 이 액세스 토큰을 받아서 이 엑세스토큰으로 우리가 사용자 대신에 우리서버가 구글서버에 사용자의 개인정보같은 민감한정보에 접근할 수 있는 권한이 생긴다. 이때 엑세스토큰을 얻기 위해서 필요한 게 코드인데 그 코드를 받기 위한 주소를 적는 ..

SpringbootSecurity 2021.08.27

SpringbootSecurity/Security권한처리/@EnableGlobalMethodSecurity처리

Security버전 1의 마지막이다. admin과 manager의 권한 처리를 해볼 것이다. 관리자와 매니저는 엄연히 다른 권한을 가져야 하기 때문에 일반 유저와 분리가 돼야 한다. 하지만 지금 role이 전부 USER로 잡혀있는 것을 확인할 수 있다. 이렇게 인증을 설 정해주면 user로 로그인하면 /user만 들어갈 수 있고 manager로 로그인하면 /manager는 들어갈 수 있는데 인증만으론 갈 수 없는 /admin페이지로는 갈 수 없다. admin은 권한이 필요하기 때문이다. admin으로 로그인하면 다 들어갈 수 있다. 특정 메서드 메서드 하나에만 권한 처리를 하는 방법 특정 메서드 하나만 권한 처리만 하고 싶은 경우에는 @EnableGlobalMethodSecurity를 사용해서 위 설정들..

SpringbootSecurity 2021.08.27

SpringbootSecurity/시큐리티 로그인

SpringbootSecurity에 포스팅은 처음부터 끝까지 연결되니 처음부터 봐주세요 저번 포스팅 때 시큐리티 회원가입을 해봤으니 이제 로그인을 진행해 본다. 주석을 꼭 참고하고 위와 같이 security설정을 해준다. 위와 같이 action속성을 지정해주면 이제 login처리는 security가 낚아채서 대신 처리를 해주는 것이다. method는 Post로 설정. 이때 시큐리티가 로그인처리를해주기위해 해줘야 할 몇 가지 처리들이 있다. 주석을 꼭 참고해서 공부할것 설명을 좀 더 덫붙힌다면. user가 로그인을 했을 때 저장하는 session정보를 Security Session에 저장을 해야 한다는 말인데 그러기 위해선 Security Session => Authentication객체 => UserDe..

SpringbootSecurity 2021.08.25

SpringbootSecurity/시큐리티 회원가입

Security 가 적용된 로그인 시스템을 만들어 갈 것입니다. 이번 포스팅에서는 회원가입을 다뤄 보겠습니다. 먼저 view단을 간단하게 아래와 같이 구성한다. form에 action처리랑 method속성은 상황에 맞게 추가시켜준다 이제 DB 모델을 만든다. 이제 해당 모델로 만든 클래스를 jpaRepository를 상속받아서 userRepository를 만들고 컨트롤러를 만들어서 회원가입을 시켜 볼 거다 주석에 적혀있다시피 일반적인 save함수를 사용하면 시큐리티로 로그인을 할 수가 없기 때문에 config에서 설정을 좀 더 잡아줘야 한다. 주석을 참고하길 새로운 어노테이션을 하나 더 배웠다 @been 주석 참고! 위 주석에서처럼 그냥 save함수만 써서 가입을 시켰더라면 시큐리티 처리가 되지 않은 그..

SpringbootSecurity 2021.08.25

SpringbootSecurity/security설정

전포 스팅과 이어서 갑니다. 이번엔 기본적인 security설정을 해볼 것입니다. 이렇게 컨트롤러를 만들고 테스트를 한번 해 보자 아직 뷰를 만들지 않았기 때문에 responsebody를 붙여서 호출해보면 /login을 호출할 때 SpringSecurity가 낚아 채 버리기 때문에 나중에 수정이 필요할 것 같다. 요기서 요점은 admin을 호출할 때는 admin에 대한 권한에 대한사람만 접근하게 하고 manager를 호출할때는 manager에 대한 권한이 있는 사람만 접근하게 하고 싶다 그럴 때 해야 하는 설정이 있다. antMathcer로 인증이 필요한 uri를 설정할 수 있고 access를 설정하면 인증뿐만 아니라 위와 같이 설정한 권한이 있는 사람만 들어가게 할 수 있다. . anyRequest()..

SpringbootSecurity 2021.08.24