분류 전체보기 410

SpringbootSecurity/Springboot로 페이스북 로그인 해보기

https://developers.facebook.com/?locale=ko_KR Facebook for Developers iOS 14에 대비한 파트너 준비 사항: Facebook 광고에 영향을 미칠 Apple iOS 14 요구 사항에 대해 자세히 알아보세요. FACEBOOK으로 빌드하기 Facebook의 추천 플랫폼으로 고객과 소통하고 효율을 높여보세요 developers.facebook.com 위 사이트에 들어가서 로그인을 한다. 로그인하면 상단 해더에 '내 앱'이라는 카테고리가 있는데 거기로 들어가서 앱을 아래와 같이 만든다. 시작하기 전에 기본적인 oauth로그인에 대한 코드나 내용은 이전 포스팅인 구글로그인편을 해 보고 오셔야 해당 포스팅을 이해하실 수 있습니다. 앱을 만들고 로그인 기능을 추..

SpringbootSecurity 2021.08.31

SpringbootSecurity/Springboot로 구글로그인 해보기(3)/구글 로그인 및 자동 회원가입 진행 완료

저번 포스팅에서 이어집니다. PrincpalDetails를 만든 이유는 Authentication객체에 일반 로그인을 했을 경우의 타입과 oauth를 사용해서 로그인한 경우의 타입 이 두 가지 타입을 일치시키기 위해서이다. 그럼 이제 회원 oauth 회원가입을 해보자 회원가입 여기서 attributes가 가지고 있는 정보는 아래와 같다. getAttributes {sub=105617652356040885552, name=, given_name=, family_name= , picture=https://lh3.googleuserconent.com/a/AATXAJzvxBp9CVwqOqPeThYDMDJvNPxhu , email=@gmail.com , email_verified=true , locale=ko} ..

SpringbootSecurity 2021.08.29

SpringbootSecurity/Springboot로 구글로그인 해보기(3)/Authentication객체가 가질 수 있는 2가지 타입

위 받은 정보들을 분석해 보면 registrationId로 어떤 OAuth로 로그인했는지 확인이 가능하다. Authentication객체 테스트 Authentication 를 DI(의존성 주입) 하면 Authentication객체안에 principal이 있고 이 객체는 return타입은 Object이기 때문에 user정보를 다운 캐스팅해서 호출을 하면 user의 정보를 볼 수 있다. @AuthenticationPrincipal을 통해서 세션정보에 접근할 수 있다. 즉 userDetails에 접근을 할 수 있게 된다는 얘기이다. 하지만 UserDetails타입을 가지고 있다 그렇기 때문에 아래와 같이 수정하면 user오브젝트를 받을 수 있게 된다. 그럼 이번엔 구글로 로그인하면 어떻게 되는지 확인해 보자...

SpringbootSecurity 2021.08.29

SpringbootSecurity/Springboot로 구글로그인 해보기(2)/구글 회원 프로필 정보

저번 포스팅에서 이어갑니다. 이제 구글 로그인까지는 완료했는데 후처리가 필요하다. 구글 로그인 후처리 일반적으로 구글이 구글을 완료하면 어떻게 처리가 되는지 알아야 한다. 일단 로그인을 하게 되면 1. 코드 받기(인증) 2. 액세스 토큰(권한) 3. 권한을 통해서 사용자 프로필 정보를 가져온다. 4-1. 그 정보를 토대로 회원가입을 자동으로 진행시키기도 한다. 4-2. 예를 들어 쇼핑몰을 한다고 하면 기본적인 USER정보와 더해서 추가적인 집주소, 백화점몰->(VIP 등급, 일반등급)이 필요하다. TIP 구글 로그인이 완료가 되면 코드를 받는 것이 아니다. 무엇을 받냐면 액세스 토큰+사용자 프로필 정보까지 한 번에 다 받을 수 있다. Oauth2 clinet라이브러리에서 제공해주는 기능 일단 config..

SpringbootSecurity 2021.08.29

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

SpringBootSecurity/프로젝트 생성 및 mustache템플릿엔진 환경 설정

먼저 시큐리티 공부를 위한 프로젝트를 생성해야 하니 다음과 같이 db를 만들어 준다. 프로젝트 기본 의존성설정은 위와 같이 해준다. 그다음 yml파일로 바꾼뒤 아래와 같이 설정해준다. server: port: 8080 servlet: context-path: / encoding: charset: UTF-8 enabled: true force: true spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/security?serverTimezone=Asia/Seoul username: cos password: cos1234 mvc: view: prefix: /templates/ suffi..

SpringbootSecurity 2021.08.24