[JAVA/Spring] Spring Security

MinJi·2024년 9월 20일

BackEnd

목록 보기
1/6

Spring Security XML 설정

<security:http>
    <security:custom-filter ref="myCustomFilter" position="CONCURRENT_SESSION_FILTER" />
</security:http>

<bean id="myCustomFilter" class="com.example.MyCustomFilter">
	<constructor-arg ref="myRepository" />      
<bean/>
  • position="CONCURRENT_SESSION_FILTER"는 스프링 시큐리티의 필터 체인에서 세션 관리를 위한 필터의 위치를 지정하는 속성이다.
    • 사용자가 동시에 여러 세션을 사용할 수 있는지 제어한다.
    • 설정에 따라 사용자가 로그인할 수 있는 세션의 수를 제한하고 초과 시 이전 세션을 무효화하거나 특정 동작을 수행할 수 있다.
  • <constructor-arg> 는 스프링의 XML 설정 파일에서 빈을 정의할 때 생성자 인자를 전달하는데 사용된다.

public class MyCustomFilter {
    private final MyRepository repository;

    public MyCustomFilter(MyRepository repository) {
        this.repository = repository;
    }

    // 기타 메서드
}

doFilter() 함수

HTTP 요청과 응답을 가로채어 처리하는 데 사용된다.

void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
  • ServletRequest
    클라이언트의 요청 정보를 담고 있는 객체이다.
    헤더, 세션 정보 등을 얻을 수 있다.
  • ServletResponse
    서버의 응답 정보를 담고 있는 객체이다.
    클라이언트에게 보낼 데이터를 설정하는데 사용된다.
  • FilterChain
    다음 필터 또는 최종 서블릿으로 요청을 전달하는데 사용된다.
    필터에서 체인을 호출해야 다음 필터가 실행된다.
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;

public class MyCustomFilter implements Filter {
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        // 요청 처리 전 로직
        System.out.println("Before processing request");

        // 다음 필터 또는 서블릿 호출
        chain.doFilter(request, response);

        // 응답 처리 후 로직
        System.out.println("After processing request");
    }
}

@Secure()

  • 스프링 시큐리티에서 메서드 보안을 설정하는데 사용된다.
  • 특정 역할이나 권한이 필요한 메서드에 대한 접근을 제어할 수 있다.

@Secured("IS_AUTHENTICATED_ANONYMOUSLY")

  • IS_AUTHENTICATED_ANONYMOUSLY: 익명 사용자(로그인하지 않은 사용자)가 접근할 수 있도록 허용한다.

0개의 댓글