본문 바로가기
Spring/Spring Security

개발자 유미 - 스프링 시큐리티 3. Security Config 인가 작업

by kimyoungrok 2025. 2. 9.
728x90

스프링 시큐리티 3 : Security Config 인가 작업

 

개발자 유미 | 커뮤니티

 

개발자 유미 | 커뮤니티

 

www.devyummi.com

 

인가

특정 경로 요청시 Controller보다 앞서 Filter에서 Spring Security가 다음과 같은 검증을 진행

  1. 허용된 접근 경로인지
  2. (로그인을 통해)인가 된 사용자인지
  3. 접근에 필요한 권한을 가지는지 검증

 


SecurityConfing.java 생성

/config/SecurityConfing.java

package com.cos.testsecurity.config;

import org.springframework.context.annotation.Bean;
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.web.SecurityFilterChain;

@Configuration
@EnableWebSecurity
public class SecurityConfig {
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
                .authorizeHttpRequests((auth)->auth
                        .requestMatchers("/", "/login").permitAll()
                        .requestMatchers("/admin").hasRole("ADMIN")
                        .requestMatchers("/my/**").hasAnyRole("ADMIN", "USER")
                        .anyRequest().authenticated()
                );
        return http.build();
    }
}

  • requestMatchers : 특정 경로나 요청 패턴에 대한 보안 설정을 적용할 때 사용
  • permitAll : 해당 경로나 요청에 대해 인증/인가 없이 누구나 접근 가능
  • hasRole : 특정 역할(Role)이 부여된 사용자만 접근 가능하도록 설정
  • hasAnyRole : 여러 개의 역할(Role) 중 하나라도 가지고 있으면 접근 가능
  • anyRequest : 앞서 정의한 특정 요청을 제외한 모든 요청을 의미
  • authenticated : 인증된 사용자만 접근 가능하도록 요구
728x90