1. 스프링 시큐리티
- 인증/인가 해주는거
- 보안을 담당하는 스프링의 하위 프레임워크
- CSRF, 세션 고정 공격 방어 등 보안
- 스프링필터체인 방식으로 작동
- 필터가 겁나 많은데 이건 검색해보면 다 나온다.
- 구현만 할거임 나는
// SecurityContextPersistenceFilter : SecurityContext를 HTTP session에 저장하거나 읽어오는 역할을 한다.
// LogoutFilter : 로그아웃을 처리하는 필터
// UsernamePasswordAuthenticationFilter : 인증관리자. 폼 기반 로그인에 사용되는 필터로 사용자명과 비밀번호를 사용하여 인증을 처리한다.
// DefaultLoginPageGeneratingFilter : 기본으로 설정하는 로그인 페이지 관련 필터
// BasicAuthenticationFilter : 요청 헤더에 있는 아이디와 비밀번호를 파싱해서 인증 요청을 위임한다.
// RequestCacheAwareFilter : 요청 캐시를 처리하는 필터
// SecurityContextHolderAwareRequestFilter : 시큐리티 관련 서블릿 API를 HttpServletRequest 객체에서 사용할 수 있도록 도와주는 필터
// AnonymousAuthenticationFilter : 익명 사용자에 대한 처리를 하는 필터
// SessionManagementFilter : 세션 관리 필터
// ExceptionTranslationFilter : 예외 처리 필터
// FilterSecurityInterceptor : 인가 처리를 하는 필터
2. 실습
1. 의존성 추가하기
2. entity 만들기
- UserDetails 를 springSecurity에서 가져와서 사용하게 되고, 반드시 구현을 해주어야하는 부분이 있다.
3. Repository 구현
- findByEmail 메서드 인터페이스를 만들어준다.
- 명명 규칙이 있다.
- ex) findByName() : name 컬럼 중 파라미터값과 같은 데이터 반환 (... WHERE name=파라미터)
- ex2) findByNameAndAge() : 파라미터 중 첫번째 값은 name컬럼과 같은 값 조회, 두번째 값은 age컬럼과 같은 값 조회해서 반환 (WHERE name=파라미터1 AND age=파라미터2)
- ex3) findByNameOrAge() : OR이다.
4. 서비스
5. 시큐리티 설정하기
- requestMatchers() : 특정 요청과 일치하는 url에 대한 액세스
- permitAll() : 누구나 접근이 가능하게 설정
- anyRequest() : 위에서 설정한 url 이외의 요청에 대해서 설정
- authenticated() : 별도의 인가는 필요하지 않지만 인증이 접근 가능
- loginPage() : 로그인 페이지 경로
- defaultSuccessUrl() : 로그인이 완료되었을 경우 이동할 경로
- logoutSuccessUrl() : 로그아웃이 완료되었을 때 이동할 경로
- invalidateHttpSession() : 로그아웃 이후 세션을 전체삭제할지 여부 설정
- csrf 설정은 비활성화되어있음
- userDetailsService : 사용자 정보를 가져올 서비스 설정(반드시 UserDetailsService를 상속받은 클래스여야함)
- passwordEncoder() : 비밀번호 암호화를 위한 인코더 설정
6. 서비스 메서드 코드 작성
- AddUserRequest DTO 생성
- UserService
7. 컨트롤러 작성하기
아 순환참조 개빡친다
다른걸로 다시해야겠다..
'Backend - Java Spring > Spring Boot 초급' 카테고리의 다른 글
[Boot3] 통복습 (0) | 2024.02.14 |
---|---|
[Boot] CRUD 기초 DTO 설계 가이드라인 (0) | 2024.02.13 |
[Boot3] 글 수정 API 구현하기 (0) | 2024.02.13 |
[Boot3] 글 삭제하는 API 구현 (0) | 2024.02.13 |
[Boot3] 글 한개 조회하는 API 구현 (0) | 2024.02.13 |
댓글