Spring Sescurity 란? 

'인증(Authentication)'과 '권한(Authorization)'에 대한 보안 부분을 담당하는 스프링 하위 프레임워크.
  • 많은 보안 관련 옵션들을 제공해주어 개발자가 보안 로직을 하나씩 작성하지 않아도 되는 장점이 있다.

 

 

Authentication 인증 →  접근하는 유저가 누구인지 확인하는 절차 (ex 로그인)
Authorization   허가 → 인증된 상태에서 권한(일반유저인지 관리자인지)을 확인하고 허락하는 절차

 

'인증' 절차의 예 

- 물건을 사기 위해 쇼핑몰에서 로그인을 하였다.

 

'허가' 절차의 예

- 다른 유저가 단 댓글을 삭제시키려고 했으나 권한이 없어 실패하였다.

  모든 유저의 댓글삭제 가능한 권한은 관리자만 가능.

 

 

그래서! 

유저를 인증하는 단계인 인증이 먼저 이루어지고

인증된 유저가 가지는 권한이 맞는지 확인하는 허가가 다음으로 이루어진다.

결론 : 순서는 인증 다음 허가가 이루어짐.  

 

 

 


[기본설정]

스프링 세큐리티 추가하기 

 

 

 

시큐리티를 추가하면 콘솔창에 시큐리티 임시 패스워드가 나온다.

 

 

 

[ 시큐리티 적용중 ]

새로고침 하면 바로 로그인창이 뜬다.

id : user
password : f8b07d29-8730-4185-a96d-bb336d870387

 

 

 

[application properties] 에서 임시 비번설정 가능.

spring.security.user.name=user
spring.security.user.password=1234 

 

 

 

SecurityConfig 클래스 생성

1. 상속(WebSecurityConfigurerAdapter

2. 어노테이션(@EnableWebSecurity , @Controller )

 

 

 

ctrl + space 눌렀을때 configure(HttpSecurity http)로 자동완성하기

 

 

@EnableWebSecurity
@Controller
public class SecurityConfig extends WebSecurityConfigurerAdapter{
//시큐리티 1.인증(로그인) 2.허가(role에 따른 허용가능한 범위)

@Override
protected void configure(HttpSecurity http) throws Exception {
    // 허가(role에 따른 허용가능한 범위)
    http.authorizeHttpRequests()
        //.antMatchers("/category/**").hasAnyRole("USER","ADMIN") //카테고리는 유저,관리자만
        //.antMatchers("/admin/**").hasAnyRole("ADMIN") //관리자폴더는 관리자만
        .antMatchers("/").permitAll(); //누구나 접근
}

 

아직 관리자, 회원이 없으니까 누구나 접근할 수 있도록 .antMatchers("/").permitAll();  만 남겨두기!

http.authorizeHttpRequests()
      .antMatchers("/").permitAll();

 

 

 

 

[ 유저, 관리자 테이블 만들기 ]

 

users테이블

 

admin 테이블

 

 

반응형
LIST

+ Recent posts