관리 메뉴

seok의 패치노트

[Security] 스프링 Security가 동작하기 위해 필요한 클래스들 본문

Spring/Security

[Security] 스프링 Security가 동작하기 위해 필요한 클래스들

석석's 2021. 11. 4. 22:51

 

 

사용자 정의 보안기능을 구현하기 위해 필요한 클래스들
 1. WebSecurityConfigurerAdapter
   - 스프링 시큐리티의 웹 보안 기능 초기화 및 설정 할때 필요 
   - 내 시스템에 보안기능이 작동하게 하는 역활
   - "HttpSecurity" 클래스를 생성함


 2. SecurityConfig 
   - WebSecurityConfigurerAdapter 를 상속받아 사용자 정의 보안 설정 클래스 역활을 함
   - 시큐리티가 제공하는 클래스는 아니고 그냥 내가 만들것임!!! (커스텀 클래스)
   - 내가만든 클래스에서 시큐리티의 기능이 작동하도록 하기위해
   - 따로 안만들면 "HttpSecurityConfiguration" 클래스에서 초기화가 이루어짐(2021-11-04 기준)
   

 3. HttpSecurity
   - 세부적인 보안 기능 을 설정할 수 있게 도와줌(API를 제공해줌)
   - 인증 API
      * http.formLogin()
      * http.logout()
      * http.csrf()
      * http.httpBasic()
      * http.SessionManagerment()
      * http.RememberMe()
      * http.ExceptionHandling()
      * http.addFilter()
   - 인가 API
      * http.authorizeRequest()
         .antMatchers(/admin)
         .hasRole(USER)
         .permitAll()
         .authenticated()
         .fullyAuthentication()
         .access(hasRole(USER))
         .denyAll()

 

 

 

그럼 한번 코드로 WebSecurityConfigurerAdapter 추상클래스를 상속받아 SecurityConfig 클래스를 만들어 시큐리티를 적용해보자 !!..

 

먼저 시큐리티가 이미 적용되었기때문에 기본으로 제공해주는 user에 대해 설정하기 위해 yml 파일을 좀 건드려야 한다.

이렇게 하지 않으면 프로젝트 실행마다 password 가 랜덤문자로 제공되기 때문에 실행마다 로그인할때 귀찮아진다.

 

 

 

 

먼저 SecurityConfig 라는 이름으로 클래스를 만들고 "WebSecurityConfigurerAdapter" 를 상속받자

그 후 "configure 메소드를 override 하여 내 입맛에 맞춰 만들면된다.

(보통 인증 , 인가  ,로그아웃 , remember me 정도 하는거같음)

 

 

configure 메소드 안에 인가정책을 보면 현재 모든 요청에 대해 모두 인증받도록 설정해 두었다 그렇기 때문에 사용자가 어떠한 url을 치고 들어와도 404가 아닌이상 모두 로그인 페이지로 이동할 것이다.

 

 

 

사진속에는 login 페이지 url로 나와있지만 나는 루트("/") 경로 로 접근하였지만 현재 인가정책으로 인해 인증된 유저인지 확인하기 위해 로그인 페이지로 들어온 것 을 확인할 수 있다.