본문 바로가기
Spring

Spring Security 기본 세팅

by Mecodata 2023. 5. 9.

Configuration

- Spring Security의 가장 기본은 Configuration 클래스(SecurityConfig) 설정

- @configuration 및 @EnableWebSecurity 적용 및 WebSecurityConfigurerAdapter를 상속

(WebSecurityConfigurerAdapter의 경우 최신 버전에서는 미지원)

※ @EnableWebSecurity = Spring Security에 대한 설정을 할 클래스라 지정하는 어노테이션 

- Spring Security는 HttpSecurity를 사용하여 각종 설정 수행

※ BCryptPasswordEncoder = Spring Security에서 제공하는 비밀번호 암호화 객체 

역할

- 리소스(URL) 접근 권한 설정
- 인증 전체 흐름에 필요한 로그인&로그아웃 페이지, 인증완료 후 페이지 인증 실패 시 이동 페이지 등 설정
- 인증 로직을 커스텀하기 위한 커스텀 필터 설정
- 기타 csrf, 강제 https 호출 등

관련 메소드

- csrf.disable() = CSRF 비활성화

Spring Security는 기본적으로 CSRF Token을 발급하여 토큰과 함께 요청을 받아 공격을 방지

 

- antMatchers() = 특정 리소스(URL) 지정
- anyRequest() = 모든 리소스(url)를 지정
- permitAll() = 인증절차 없이 접근 허용
- hasAnyRole() = 접근 권한 레벨 설정

ex) hasAnyRole("ADMIN") = ADMIN 레벨의 사용자만 접근 가능
- authenticated() = 인증을 거치도록 설정

- formLogin() = 로그인 폼 페이지와 로그인 처리 성공 실패 등을 사용 (로그인 처리의 기본 세팅)
- loginPage() = 로그인 페이지 설정
- loginProcessingUrl() = 인증 처리를 하는 URL 설정
- defaultSuccessUrl() = 인증 성공했을 경우 이동하는 페이지 설정
- failureUrl() = 인증 실패했을 경우 이동하는 페이지 설정

 

UserDetails

- Spring Security는 기본적으로 User 정보에 대한 클래스를 정의할 때 UserDetails 인터페이스를 상속하여 정의함

- @Getter, @Setter, @ToString 적용 및 생성자 메소드는 GrantedAuthority를 제외하여 따로 정의해야 함

※ java-MySQL 연동 시 java의 boolean 타입은 MySQL에서 tinyint(1) 타입으로 적용됨 (1=true, 0=false)

 

UserService

- UserService는 대체로 UserDetailsService 인터페이스를 확장 => UserServiceImpl에서 UserService를 상속받아 정의함

- UserDetailsService 인터페이스는 유저의 정보를 불러와서 UserDetails 객체로 반환하는 loadUserByUsername 메소드를 갖고 있음 (해당 메소드 UserServiceImpl에서 오버라이딩 필수!)

 

 

'Spring' 카테고리의 다른 글

의존성 주입 방식  (0) 2023.05.25
JWT  (0) 2023.05.25
Spring Security 기본 로그인 구현 중 실수 정리  (0) 2023.05.11
Thymeleaf 기본 문법  (0) 2023.05.08
Spring Security 정의 및 동작 구조  (0) 2023.05.04

댓글