[17강] CSFR 토큰해제

[17강] CSFR 토큰해제

ㅇ 내 용

- 시큐리티 세팅 / 회원가입 구현 / 로그인 구현 / 회원정보 수정 구현

- /auth/signup 페이지에서 4가지 항목 입력 후 가입을 누르게 되면 정상 작동 확인 예정

- 회원가입이 되려면, auth라는 폴더에 signup.jsp 파일 내 이 있음

- action="/auth/signup" 으로 하면 같은 페이지로 오게 된다고 생각할수 있지만, method를 post로 하여 요청을 해야함

- controller가 필요하기 때문에, AuthController 클래스를 생성(인증을 위한 컨트롤러) / 소스파일 참고

- CSRF 토큰 :

- 서버에, 클라이언트가 요청을 할 시 form에 dataf를 넣고 전송버튼을 눌러 dataf를 전송할 예정

- 서버는 data를 받을 시 '시큐리티'가 감싸고 있어 'CSRF'라는 토큰 검사를 한다

- 회원가입창은 사용자가 회원가입 페이지를 요청하여 서버는 회원가입 페이지를 응답해준다.(signup.jsp)

- signup.jsp 이 파일에 CSRF 토큰, 임시 난수값으로 KFC라는것을 심어서 돌려준다.

- KFC 토큰이 달려있는 상태로 회원가입을 요청 하면, 서버에서는 만들어준 CSRF 토큰이 있는지 검사

- 정상적으로 회원가입 페이지를 확인, 하지만 여기서는 CSRF를 비활성화 시킬 예정

ㅇ 소스파일

- AuthController

package com.cos.photogramstart.web; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @Controller // 1. IoC 2. 파일을 리턴하는 컨트롤러 public class AuthController { @GetMapping("/auth/signin") public String signinForm() { return "auth/signin"; // ViewControllerTes와 중복이므로 주석 처리 해야 함 } @GetMapping("/auth/signup") public String signupForm() { return "auth/signup"; } // 회원가입버튼 -> /auth/sighup -> /auth/signin // 회원가입버튼 x @PostMapping("/auth/signup") public String signup() { System.out.println("signup 실행됨?"); return "auth/signin"; } }

- signup.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Photogram 가입 계정이 있으신가요? 로그인

- SecurityConfig.java

package com.cos.photogramstart.config; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @EnableWebSecurity // 해당 파일로 시큐리티를 활성 @Configuration //IoC public class SecurityConfig extends WebSecurityConfigurerAdapter{ @Override protected void configure(HttpSecurity http) throws Exception { //super 삭제 - 기존 시큐리티가 가지고 있는 기능이 다 비활성화 됨. http.csrf().disable(); http.authorizeRequests() // 인증이 되지않은 사용자는 모두 로그인 페이지로 이동하게 만 .antMatchers("/", "/user/**","/image/**","/subscribe/**","comment/**").authenticated() // 이런주소로 시작하게 되면, 인증이 필요 .anyRequest().permitAll() // 그게 아닌 모든 요청은 포용하겠다 .and() .formLogin() // 폼로그인 페이지가 .loginPage("/auth/signin") // 이쪽으로 오게 만 한 .defaultSuccessUrl("/"); // 로그인이 정상적으로 처리하면, "/"로 가게 한다 } }

ㅇ 후 기

- 강의 하나를 볼때 3번씩 반복 해서 보게 됨

- 첫번째는 똑같이 실습하기, 두번째는 내용정리, 세번째는, 세번째는 마무리 공부

- 어차피 처음 보는 내용이라 몇십번 봐도 순도 100% 이해하지 못할 가능성이 크기 때문에, 최소한의 규칙을 만들어 공부 중

from http://aszzoon.tistory.com/26 by ccl(A) rewrite - 2021-10-01 10:01:40