본문 바로가기
IT/Spring

Spring Security 기본 API, filter

by eddie_factory 2021. 7. 8.
반응형

1. 스프링 시큐리티 시작 (dependency 추가)

maven - pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

gradle - build.gradle

implementation 'org.springframework.boot:spring-boot-starter-security'

2. SecurityConfig 설정 클래스를 만들어 보안 및 인가 필터 설정

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() // 리퀘스트에 대한 보안 확인
        .mvcMatchers(HttpMethod.POST, "/**").access("hasRole('ADMIN')")
        .anyRequest().authenticated();
    }
}

2-1. annotation
@Configuration

  • 스프링의 @Configuration IOC Container에게 해당 클래스를 Bean구성 Class임을 알려주는 것.
  • 초기 설정을 위해 주로 활용

@EnableWebSecurity

  • Spring Security를 활성화 시키기 위한 annotation
  • WebSecurityConfigurerAdapter를 상속받아 configure() 메소드를 오버라이드하여 작성합니다.

2-2. 활용 메소드

Method 설명
authorizeRequests() 시큐리티 처리에 HttpServletRequest를 이용한다는 것을 의미 합니다
antMatchers() 해당경로의 접근을 설정합니다
mvcMatchers() mvc 패턴에 대해 접근을 설정합니다
anonymous() 인증되지 않은 사용자가 접근할 수 있습니다
authenticated() 인증된 사용자만 접근 할 수 있습니다
permitAll() 무조건 접근을 허용 함
denyAll() 무조건 접근을 허용하지 않음
access(String) 주어신 표현식이 True일 경우 접근할 수 있습니다
hasRole(String) 특정 권한을 가진 사용자만 접근 할 수 있습니다
hasAuthority(String) 특정 권한을 가진 사용자만 접근 할 수 있습니다
hasAnyRole(String...) 특정 권한을 가진 사용자만 접근 할 수 있습니다
hasIpAddress(String) 특정 권한을 가진 사용자만 접근 할 수 있습니다
반응형

'IT > Spring' 카테고리의 다른 글

Spring Profile 설정법  (0) 2022.01.07
DB Replication에 따른 Spring 설정  (0) 2021.12.10
Springboot에서 h2 Database 설정  (399) 2021.12.10
XML to JSON 변환하기 (java)  (386) 2021.06.08
Spring Boot 프로젝트 만들기 (with. 이클립스 Maven)  (441) 2018.06.07

댓글