🤍스프링 시큐리티(Spring Security)란 스프링 기반의 애플리케이션의 인증, 인가 등을 담당하는 스프링 하위 프레임워크 인증과 권한에 대한 부분을 Filter 흐름에 따라 처리함 보안에 대해 체계적으로 다양한 옵션을 제공해주므로 개발자가 보안 관련 로직을 작성하지 않아도 됨. 스프링 시큐리티, SNS 로그인 구현하기 1. build.gradle 관련 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' implementation('org.springframework.session:spring-session-jdbc:') testImplementation 'org.springframework.securi..
🤍스프링 시큐리티(Spring Security) 회원정보 수정 구현하기 1. 먼저 회원 정보 수정 페이지로 이동하는 코드를 UserController에 작성한다. @GetMapping("/user/updateForm") public String updateForm() { return "user/updateForm"; } 2. 회원 정보 수정 화면 updateForm을 작성한다. username은 수정할 수 없도록 readonly를 넣어준다. userid는 hidden 속성으로 넣어준다. user 정보는 principal에서 가져온다. 3. 회원 정보 수정 버튼 클릭 이벤트를 user.js에 작성한다. 수정이므로 PUT 방식으로 처리한다. let index = { init: function(){ $("#b..
JSON을 이용하는 API 서버를 어떻게 만들어야 하는지 살펴본다. API 서버 구성 시 가장 주의해야 하는 부분이 보안과 인증에 대한 문제이므로 스프링 시큐리티를 사용해서 처리하고 인증 처리는 JWT를 사용하도록 한다. 🤍간단한 Note를 작성하고 이를 이용하는 API 서버 프로젝트 구현하기 1. Note 엔티티 작성 2. NoteRepository 인터페이스 작성 3. DTO 작성 3. 서비스 계층 작성 등록, 수정, 삭제, 조회 처리 public interface NoteService { Long register(NoteDTO noteDTO); NoteDTO get(Long num); void modify(NoteDTO noteDTO); void remove(Long num); List getAll..
🤍스프링 시큐리티 소셜 로그인(구글) 구현하기 1. 구글 OAuth 2.0 클라이언트 ID 생성 승인된 리디렉션 URI 지정 생성된 OAuth 클라이언트 ID 및 비밀번호는 꼭 기억해야 함. 2. build.gradle에 라이브러리 추가 //소셜 로그인 적용 implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' 3. application.oauth.properties 작성 spring.security.oauth2.client.registration.google.client-id =클라이언트 ID spring.security.oauth2.client.registration.google.client-secret = 클라이언트 ..
🤍스프링 시큐리티 프로젝트 생성 1. application.properties에 시큐리티 설정 추가 logging.level.org.springframework.security.web=trace logging.level.org.zerock=debug 2. 시큐리티 설정 클래스 SecurityConfig 작성 @Configuration @Log4j2 public class SecurityConfig extends WebSecurityConfigurerAdapter { } 💡인증(Authentication) & 인가(Authorization) 은행에 금고가 있고 사용자가 금고 내용을 열어 본다고 가정했을 때 사용자가 신분증으로 자신을 증명 => 인증 은행에서 사용자가 금고를 열어볼 수 있는지 판단 => 인가..
🤍스프링 시큐리티 구현하기 스프링 시큐리티는 스프링 기반의 애플리케이션(인증, 권한, 인가 등)을 담당하는 스프링 하위 프레임워크임. 1. 인증이 안 된 사용자들이 출입할 수 있는 /auth/ 경로를 UserController에 추가해 준다. 2. 요청이 들어왔을 때 인증이 필요한지, 필요하지 않은지 구분하는 시큐리티 필터를 등록하는 SecurityConfig 클래스 생성 3. 설정 후 localhost:8080 주소로 접근하면 아래와 같은 화면이 뜨지만 4. 인증없이 접근할 수 있도록 설정해놓은 /auth/ 주소로 접속하면 페이지가 잘 뜨는 것을 확인할 수 있다. 5. 기존에 작성한 loginForm.jsp에서 form태그를 수정한다. 6.SecurityConfig 코드를 아래와 같이 수정하면 위의 f..
폼은 지난번에 만들어둔 loginForm을 활용하고 Ajax 코드도 회원가입 코드를 복사해서 수정 후 활용할 것이다. 1. 로그인 버튼 수정 로그인 2. User.js 에 로그인 코드 작성 let index = { init: function(){ $("#btn-save").on("click",()=>{//function(){} 대신 ()=>{} : this를 바인딩하기 위해서 this.save(); }); $("#btn-login").on("click",()=>{//function(){} 대신 ()=>{} : this를 바인딩하기 위해서 this.login(); }); }, login: function(){ //alert('user의 save함수 호출됨'); let data = { username: $(..
지난번에 만든 구글 로그인에 이어 이번에는 네이버 로그인을 추가해 보도록 한다. 1. 네이버 오픈 API 홈페이지로 이동 애플리케이션 - NAVER Developers developers.naver.com 2. 애플리케이션 이름을 입력하고 네이버 아이디로 로그인 선택 3. 서비스 URL 등록.(=구글에서 등록한 리디렉션 URL 같은 역할) 여기까지 마치면 끝! 클라이언트 ID와 비밀번호가 발급된다. 4. application-oauth.properties에 네이버api 관련 키값들을 수동으로 등록한다. 구글과 달리 네이버에서는 스프링 시큐리티를 공식 지원하지 않아 수동으로 입력 필요. user_name_attribute = response : 네이버 회원 조회 시 반환되는 JSON 형태이기 때문에 res..