스프링 시큐리티
-
Spring Security JWT - JWT를 위한 로그인 시도Framework & Library/Spring Security 2021. 10. 8. 17:34
Repository 생성 public interface UserRepository extends JpaRepository { User findByUsername(String username); } ㆍ repository 패키지를 만들고 위 코드와 같이 UserRepository 인터페이스를 생성한다. ㆍ 사용자의 username을 통해 User 객체를 반환하는 findByUsername() 메서드를 작성해준다. PrincipalDetails 클래스 생성 public class PrincipalDetails implements UserDetails { private User user; public PrincipalDetails(User user) { this.user = user; } @Override p..
-
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. 22:34
API 설정 프로젝트생성 ㆍ 페이스북 개발자 홈페이지에 접속을 한 후 위 사진에 표시된 "내 앱" 버튼을 클릭한다. ㆍ "내 앱"에 접속한 후 "앱 만들기" 버튼을 클릭한다. ㆍ 앱 유형을 "없음"으로 선택한 후 "다음" 버튼을 누른다. ㆍ 표시 이름을 spring-security-basic으로 정한 후 "앱 만들기" 버튼을 클릭한다. ㆍ 앱을 만든 후 Facebook 로그인 "설정" 버튼을 클릭한다. ㆍ 설정에 들어온 뒤 "웹" 버튼을 클릭한다. ㆍ 사이트 URL을 "http://localhost:8080"으로 설정한 후 "Save" 버튼을 눌러 저장한다. ㆍ 설정 카테고리의 "기본 설정" 버튼을 누른 후 앱 ID와 앱 시크릿 코드를 확인하고 프로젝트 생성을 마무리한다. Spring Security 설..
-
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..