springframework/시작하자SpringSecurity

2.사용자 정의 보안 구현

Jungsoomin :) 2020. 9. 18. 00:00

인증 API 사용자 정의 기능구현

  • WebSecurityConfigurerAdapter 핵심 객체 : SpringSecurity웹 보안 기능 및 초기화 설정을한다.

  • SpringSecurity가 구동되며 WebSecurityConfigurerAdapter 를 초기화한다.

  • WebSecurityConfigurerAdapterHttpSecurity를 생성하여 세부적 보안기능을 설정하는 인증과 인가 API를 제공하는 것이다!

 


어떻게 설정할 수 있나요?

WebSecurityConfigurerAdapter상속하여 사용자 정의 보안클래스를 만드는것이다.

  • 상속 클래스의 메소드중 configure(HttpSecurity) 메서드를 재정의하여 인증이나 인가와 관련된 API를 설정하여 구현한다.

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http//인가
                .authorizeRequests() //요청들에 대한
                .anyRequest().authenticated();//어느 요청이든. 인증을한다.
        http//인증
                .formLogin();//폼로그인 방식으로 인증작업을 하겠다.
    }
}

 


흐름은 어떻게?

스프링시큐리티 구동 -> WebSecurityConfigurerAdapter 구현객체 초기화 -> HttpSecurity 초기화 과정에서 11개정도의 API를 호출 -> API가 설정 클래스들을 호출 -> 설정클래스들이 Filter를 생성 

 


@Configuration , @EnableWebSecurity

WebSecurityConfigurerAdapter 상속클래스도 엄연한 설정클래스, @Configuration 이 필요

@EnableWebSecurity 선언이 필요

 

@EnableWebSecurity 은 설정클래스 와 여러 클래스를 임포트 해서 실행시켜주는 어노테이션이다.

Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Documented
@Import({WebSecurityConfiguration.class, SpringWebMvcImportSelector.class, OAuth2ImportSelector.class})
@EnableGlobalAuthentication
@Configuration
public @interface EnableWebSecurity {
    boolean debug() default false;
}

기본으로 주어지는 user를 바꾸고 싶어요!

boot 에서 주어지는application.properties 

  • 제공되는 spring.securitynamepassword 속성을 변경해주면 되겠다!

spring.security.user.name=user
spring.security.user.password=1111
# 스프링 시큐리티 에서 주어지는 유저에 관한 정보 수정