Spring Security
-
Spring Security JWT - JWT를 통한 인증Framework & Library/Spring Security 2021. 10. 10. 19:42
JWT 검증 JwtAuthorizationFilter 클래스 생성 public class JwtAuthorizationFilter extends BasicAuthenticationFilter { private UserRepository userRepository; public JwtAuthorizationFilter(AuthenticationManager authenticationManager, UserRepository userRepository) { super(authenticationManager); this.userRepository = userRepository; } @Override /** 인증이나 권한이 필요한 주소요청이 있을 때 실행되는 메서드 */ protected void doFilte..
-
Spring Security JWT - 회원가입Framework & Library/Spring Security 2021. 10. 9. 15:42
SpringConfig 클래스 수정 ㆍ SecurityConfig 클래스에 위 사진에 표시된 코드를 추가한다. ㆍ BCryptPasswordEncoder는 사용자의 패스워드를 암호화해주는 객체이다. ㆍ @Bean 애너테이션을 통해 해당 메서드의 리턴되는 객체를 IoC로 등록해준다. Controller 수정 ㆍ RestApiController 클래스에 회원가입을 수행하는 메서드인 join() 메서드를 추가한다. ㆍ join() 메서드는 User 객체를 전달받고 User 객체의 패스워드를 BCryptPasswordEncoder 객체를 통하여 암호화를 한 후 DB에 저장한다. ㆍ DB에 저장이 완료되면 "회원가입 완료"라는 메시지가 반환된다. 테스트 회원가입 요청 ㆍ 테스트는 Postman을 통해서 진행하였다..
-
Spring Security JWT - 프로젝트 생성 및 환경설정Framework & Library/Spring Security 2021. 10. 7. 16:19
Spring Boot 프로젝트 생성 ㆍ 위 사진과 같은 의존성을 포함한 Spring Boot 프로젝트를 생성한다. JWT 의존성 추가 ㆍ pom.xml 파일에 JWT 라이브러리에 대한 의존성을 추가하는 코드를 작성한다. applicatoin.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: qlsdud password: ql..
-
Spring Security - 네이버 로그인Framework & Library/Spring Security 2021. 10. 5. 11:53
API 설정 프로젝트생성 ㆍ 네이버 개발자 홈페이지에 접속을 한 후 위 사진에 표시된 "애플리케이션 등록" 버튼을 클릭한다. ㆍ 애플리케이션 정보를 위 사진과 같이 작성한 후 "등록하기" 버튼을 클릭한다. ㆍ 애플리케이션을 등록한 후 Client ID와 Client Secret을 확인한 후 프로젝트 생성을 마친다. Spring Security 설정 application.yml 파일 수정 ㆍ application.yml 파일에 위 코드를 추가하여 네이버 로그인을 위한 설정을 마무리한다. ㆍ client-id와 client-secret에는 네이버 개발자 홈페이지에서 발급받은 Client ID와 Client Secret을 적는다. ㆍ oauth-client 라이브러리에는 provider로 네이버가 등록되어 있..
-
Spring Security - 구글 로그인 및 자동 회원가입Framework & Library/Spring Security 2021. 10. 4. 15:00
UserDetails, OAuth2User 타입의 통합 PrincipalDetails 클래스 수정 ㆍ 로그인 사용자의 정보와 OAuth 로그인 사용자의 정보를 받는 타입이 UserDetails, OAuth2User로 서로 다르기 때문에 구현하는데 불편함이 있었다. ㆍ 이러한 불편함을 없애기 위해 두 개의 타입을 처리할 수 있는 클래스가 필요하다. ㆍ 위 사진과 같이 기존의 PrincipalDetails 클래스에 OAuth2User 인터페이스를 추가로 구현한다. ㆍ OAuth 로그인 사용자의 정보를 받기 위해 Map 타입의 변수인 attributes를 선언하고, 생성자를 추가한다. ㆍ OAuth2User 인터페이스를 구현하고 getAttributes() 메서드와 getName() 메서드 위 사진과 같이 오..
-
Spring Security - Authentication 객체가 가질 수 있는 2가지 타입Framework & Library/Spring Security 2021. 10. 3. 15:51
Authentication 객체가 가질 수 있는 2가지 타입 ㆍ 로그인 진행이 완료되면 기존의 Sesson 공간에 Security Session 공간이 만들어진다. ㆍ Security Session에 들어갈 수 있는 정보는 Authentication 객체여야 한다. ㆍ 또한 Authentication 객체가 가질 수 있는 타입은 UserDetails와 OAuth2User 2가지 타입이다. ㆍ UserDetails와 OAuth2User 2가지 타입을 통해서 로그인을 한 사용자의 정보를 얻을 수 있다. 일반 로그인 사용자 정보 받기 IndexController 클래스 수정 @GetMapping("/test/login") @ResponseBody /* 일반 로그인 사용자에 대한 정보 받기 */ public S..