본문 바로가기

Language/Spring Security

표현식 및 커스텀 권한 구현

728x90

표현식 권한 규칙 설명

  • 스프링 시큐리티는 표현식을 사용해서 권한 규칙을 설정하도록 WebExpressionAuthorizationManager를 제공
  • 표현식은 시큐리티가 제공하는 권한 규칙을 사용하거나 사용자가 표현식을 커스텀하게 구현해서 설정 가능

 

사용 방법

  • requestMatchers().access(new WebExpressionAuthorizationManager("expression"))

 

적용하기


커스텀 권한 표현식 구현 (권한)

  • DefaultHttpSecurityExpressionHandler의 역할은 사용자가 커스텀하게 정의한 WebExpressionAuthorizationManager에 지정한 표현식 구문을 처리하는 클래스
  • @customWebSecurity.check(authentication, request)
    • @customWebSecurity → 어노테이션(@)을 붙이고 빈 이름 작성
    • .check → 빈의 메서드
    • (authentication, request) → 매개 변수로 전달할 이름
  • .requestMatchers("/resource/**").access(expressManager)
    • /resource의 모든 경로에 접근할 때는 사용자 정의를 한 표현식으로 검사

커스텀 RequestMatcher 구현 (엔드포인트)

  • RequestMatcher의 matcher 및 matches 메서드를 사용하여 클라이언트의 요청 객체로부터 값을 검증하도록 커스텀한 RequestMatcher를 구현하고 requestMatchers() 메서드에 설정


정리

  • 권한 설정 2가지
    1. .access() 안에 new WebExpressionAuthorizationManager()를 이용하여 표현식 구문 작성
    2. 커스텀 권한 표현식 구현
  • 커스텀 RequestMatcher 구현
728x90