티스토리 뷰

728x90

Method 방식 - 개요

서비스 계층의 인가처리 방식

  • 화면 메뉴 단위가 아닌 기능 단위로 인가처리
  • 메소드 처리 전,후로 보안 검사 수행하여 인가처리

AOP 기반으로 동작

URL 방식은 Filter 기반이다. 사용자 요청을 Filter가 가로채서 자원에 대한 인가처리를 한다. AOP 기반과 Filter 기반은 내부동작의 차이가 있다.

  • 프록시와 어드바이스로 메소드 인가처리 수행

보안 설정 방식

  • 어노테이션 권한 설정 방식
    • @PreAuthorize("hasRole("USER")"), @PostAuthorize("hasRole("USER")"), @Secured("ROLE_USER")
  • 맵 기반 권한 설정 방식
    • 맵 기반 방식으로 외부와 연동하여 메소드 보안 설정 구현

Method 방식 - 어노테이션 권한 설정

보안이 필요한 메소드에 설정

@PreAuthorize, @PostAuthorize

  • SpEL 지원
  • @PreAuthorize("hasRole('ROLE_USER') and (#account.username == principal.username)")
  • PrePostAnnotationSecurityMetadataSource가 담당

@Secured, @RolesAllowed

  • SpEL 미지원
  • @Secured("ROLE_USER"), @RolesAllowed("ROLE_USER")
  • SecuredAnnotationSecurityMetadataSource, Jsr250MethodSecurityMetadataSource가 담당

@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)

  • 메소드 보안시 설정해야하는 어노테이션이다

코드

@GetMapping("/preAuthorize")
@PreAuthorize("hasRole('ROLE_USER') and #account.username == principal.username")
public String preAuthorize(AccountDto account, Model model, Principal principal){

    model.addAttribute("method", "Success @PreAuthorize");

    return "aop/method";

}

preAuthorize에 접근할 때 사용자는 ROLE_USER 라는 권한을 가져야하고 account로 전달되는 username과 인증을 받았을 때 인증된 사용자 정보를 principal로 참조할 수 있는데 그때 인증받은 사용자의 username과 같아야만 이 메소드에 접근할 수 있다.

Method 방식 주요 아키텍처

인가 처리를 위한 초기화 과정과 진행

초기화 과정

  1. 초기화 시 전체 빈을 검사하면서 보안이 설정된 메소드가 있는지 탐색
  2. 빈의 프록시 객체를 생성
  3. 보안 메소드에 인가처리(권한심사) 기능을 하는 Advice를 등록
  4. 빈 참조시 실제 빈이 아닌 프록시 빈 객체를 참조

진행과정

  1. 메소드 호출 시 프록시 객체를 통해 메소드를 호출
  2. Advice가 등록되어 있다면 Advice를 작동하게 하여 인가 처리
  3. 권한 심사 통과하면 실제 빈의 메소드를 호출한다.

참고

https://www.inflearn.com/course/%EC%BD%94%EC%96%B4-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0

 

스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security - 인프런 | 강의

초급에서 중.고급에 이르기까지 스프링 시큐리티의 기본 개념부터 API 사용법과 내부 아키텍처를 학습하게 되고 이를 바탕으로 실전 프로젝트를 완성해 나감으로써 스프링 시큐리티의 인증과

www.inflearn.com

 

728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함