관리 메뉴

bright jazz music

[Spring security] 1.2 사용자 정의 보안 기능 구현 본문

Framework/Spring Security

[Spring security] 1.2 사용자 정의 보안 기능 구현

bright jazz music 2022. 9. 8. 22:46

 

 

WebSecurityConfigurerAdapter

: 스프링 시큐리티의 웹 보안 기능을 초기화 하고 설정하는 핵심 클래스이다.

의존성 추가하고 스프링 시큐리티가 초기화 보안 기능을 활성화 하고 보안 기능을 설정하는 클래스가 이 클래스이다.

여기서 HttpSecurity 클래스를 생성하고, 이 클래스가 세부적인 보안 설정을 가능케 하는 API를 제공한다.

 

 

SecurityConfig 클래스 생성 - WebSecurityConfigurerAdapter 상속 - 내부에서 HttpSecurity 클래스 생성

 

 

스프링 시큐리티가 추가된 상태에서 서버를 기동하면 WebSecurityConfigurerAdapter 클래스가 작동한다.

HttpSecurity 객체를 생성하고 그 것을 사용해서 대략 11개 정도의 API들을 호출하면서 설정 초기화 작업을 한다. 

 이 API들은 설정 클래스로 이동하는 것인다. 예를 들어 exceptionHandling()은 ExceptionHandlingConfigurer 예외 처리 설정 클래스로 이동한다. 여기서는 ExceptionTranslation과 같은 필터를 생성한다.

즉 각각의 API가 설정 클래스로 이동하고 그에 해당하는 필터를 생성하고 있다고 보면 된다.

 

 

 

여기서는 configure메서드를 호출하고 그안에서 추가적인 설정을 한다.

 

anyRequest: 어떠한 요청에도 인증을 받도록 API를 설정한다.

.httpBasic() 이 구문은 사용자가 http방식으로 요청할 때 보안검사를 한다는 것이다. 인증방식은 formLogin방식과 httpBasic()방식 두 개를 제공하겠다는 것이다.

 

이러한 설정을 덕분에 우리가 "/"로 접근하더라도 인증을 받지 않으면 다시 폼로그인 방식으로 로그인하도록 로그인 페이지가 제공되는 것이다. 바로 여기서 웹 보안 기능이 활성화 되는 것이다.

 

 따라서 우리는 configure()메소드를 오버라이드 하여 이 안에서 인증과 인가를 설정하면 우리의 설정이 적용되는 것이다.

 

 

자 이제 만들자.

SecurityConfig.java

package io.security.basicsecurity;

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();

    }
}

 

콘솔에 발생하는 랜덤 비밀번호를 로그인 비밀번호로 사용할 수 없으므로 application.properties 파일에 계정을 설정해 준다.

#application.properties 파일에 아래와 같이 적어주기

#시큐리티 로그인 계정 설정
spring.security.user.name=user
spring.security.user.password=1111

 

 

Comments