반응형
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 |
댓글