프레임워크와 라이브러리의 차이 : 제어 흐름
프레임워크 : 애플리케이션 코드가 프레임워크 안에서 수동적으로 동작한다. 제어의 흐름이 프레임워크에게 있다. (제어의 역전 IoC)
라이브러리 : 필요할때마다 능동적으로 라이브러리를 호출한다. 제어의 흐름이 개발자(나)에게 있다.
Spring Security
스프링 프레임워크 기반의 웹 어플리케이션에서 보안기능을 구현할 수 있도록 지원하는 프레임워크
인증 및 권한 부여를 위한 다양한 기능을 제공한다.
ex) 폼 기반 인증, HTTP 기본 인증, OAuth2, JWT(JSON Web Token), CSRF 방어, XSS 방어
Spring Security - 로그인
과정은 아래와 같다.
1. /login 요청이 오면 톰캣은 request 객체를 만들어 보낸다.
2. security filter 중 특정 필터는 /login 요청시 UsernameAndPasswordToken을 생성한다.
3. loadUserByUsername은 토큰의 username을 DB에서 조회하고, user가 존재하면 user객체를 UserDetails에 담아 SecurityContextHolder의 Authentication에 저장한다.
4. 인증이 필요한 주소로 요청이 오면 Authentication이 담아져 있는지 확인하고 입장시킨다.
SecurityContextHolder 구조
SecurityContextHolder의 Authentication안에 UserDetails를 담는다.
시큐리티 필터
톰캣과 필터 사이에 시큐리티 필터 체인을 둔다.
보낸 요청은 연속적으로 필터로 걸러져, 인증이 필요하면 인증할 수 있는 곳으로 던진다.
- 인증이 필요한 주소는 기본이 모든 url(주소)이다.
- 세션이 없다면 /login으로 이동 (Get)
- /login으로 post요청시 MIME 타입(어떤 타입인지 알려줌)은 x-www-form-urlencoded
x-www-form-urlencoded
문자를 서버로 보내기 전, URL 인코딩 한다.
key=value&key=value 형식
스프링 메서드 파라미터
스프링은 기본적으로 메서드에 파라미터가 있으면 x-www-form-urlencoded이다.
과제
controller에서 dto만 만들어서 던져주는 실습하기 + security 공부하기 + dto 문서 참고하기
1강~8강까지 SpringSecurity 강의 듣기
7,8 chapter는 다음주
dto 코드를 보고 api 문서 보면서 productRestController의 /products 참고해서 dto 3개를 만들었음
참고해서
product/1 : 상세보기보면 1,2
✳️ /carts보려면 로그인하기
loalhost:8080/join해서 json 데이터 (username, password, email} 보내서 회원가입하기
=> 토큰 복사후 헤더를 Bearer로 넣기
API 주소 요청했을때 dto 만들어놓기
'Spring > 카테캠 - TIL' 카테고리의 다른 글
TIL [0705] : 2주차 과제 -1. Restful API, 2. Mock Controller 일부 (0) | 2023.07.05 |
---|---|
카테캠 : 1주차 코드리뷰 (0) | 2023.07.04 |
TIL[0703] : 2주차 강의 1 (0) | 2023.07.03 |
TIL [0630] : 1주차 - 연관관계 파악 및 ER-Diagram 작성 (0) | 2023.06.30 |
TIL [0629] :1주차 - DB 테이블 Schema (MySQL) (0) | 2023.06.29 |