Language (102) 썸네일형 리스트형 Spring MVC 통합 - @AuthenticationPrincipal Spring Security는 Spring MVC 인수에 대한 현재 Authentication.getPrincipal()을 자동으로 해결 할 수 있는 AuthenticationPrincipalArgumentResolver를 제공Spring MVC 에서 @AuthenticationPrincipal을 메서드 인수에 선언하게 되면 Spring Security와 독립적으로 사용 가능@AuthenticationPrincipal 어노테이션이 메소드 호출 전 Authentication으로 부터 customer 객체를 principal에서 꺼내서 customUser의 인자로 전달해주는 역할 @AuthenticationPrincipal(expression=”표현식”)Principal 객체 내부에서 특정 필드나 메서드에 .. Servlet API 통합 - SecurityContextHoladerAwareRequestFilter 스프링 시큐리티는 다양한 프레임워크 및 API 와의 통합을 제공하고 있으며 Servlet 3과 Spring MVC 와 통합을 통해 여러 편리한 기능들을 사용 가능인증 관련 기능들을 필터가 아닌 서블릿 영역에서 처리 가능Servlet3+ 통합SecurityContextHolderAwareRequestFilterHTTP 요청이 처리될 때 HttpServletRequest에 보안 관련 메소드를 추가적으로 제공하는 래퍼(SecurityContextHolderAwareRequestWrapper) 클래스를 적용이를 통해 개발자는 서블릿 API 의 보안 메소드를 사용하여 인증, 로그인, 로그아웃 등의 작업을 수행 가능HttpServlet3RequestFactoryServlet 3 API 와의 통합을 제공하기 위한 S.. 인가 이벤트 - Authorization Events Spring Security는 권한 부여 이벤트 처리를 지원하며 권한이 부여되거나 거부된 경우에 발생하는 이벤트를 수신 가능이벤트를 수신하려면 ApplicationEventPublisher 를 사용하거나 시큐리티에서 제공하는 AuthorizationEventPublisher를 사용해서 발행해야 함AuthorizationEventPublisher의 구현체로 SpringAuthorizationEventPublisher가 제공 이벤트 발행 방법ApplicationEventPublisher.publishEvent(ApplicationEvent)AuthorizationEventPublisher.publishAuthorizationEvent(Supplier, T, AuthorizationDecision) 이벤트 수.. 인증 이벤트 - AuthenticationEventPublisher 활용 커스텀 예외 & 이벤트 추가@Beanpublic AuthenticationEventPublisher customAuthenticationEventPublisher(ApplicationEventPublisher applicationEventPublisher) { Map, Class> mapping = Collections.singletonMap(CustomException.class, CustomAuthenticationFailureEvent.class); DefaultAuthenticationEventPublisher authenticationEventPublisher = new DefaultAuthenticationEventPublisher(applicationEventPublisher); authe.. 인증 이벤트 - Authentication Events 스프링 시큐리티는 인증 성공 또는 실패 여부에 따라 AuthenticationSuccessEvent 또는 AuthenticationFailureEvent를 발생이벤트를 수신하려면 ApplicationEventPublisher를 사용하거나 시큐리티에서 제공하는 AuthenticationEventPublisher 를 사용해서 발행해야 함AuthenticationEventPublisher의 구현체로 DefaultAuthenticationEventPublisher 제공이벤트 발행 방법ApplicationEventPublisher.publishEvent(ApplicationEvent)AuthenticationEventPublisher.publishAuthenticationSuccess(Authentication).. AOP 메서드 보안 구현 - MethodInterceptor, Pointcut, Advisor MethodInterceptor, Pointcut, Advisor, AuthorizationManager 등을 커스텀하게 생성하여 AOP 메서드 보안을 구현 가능AOP 요소 이해AdvisorAOP Advice와 Advice 적용 가능성을 결정하는 포인트컷을 가진 기본 인터페이스MethodInterceptor(Advice)대상 객체를 호출하기 전과 후에 추가 작업을 수행하기 위한 인터페이스로서 수행 이후 **실제 대상 객체의 조인포인트 호출(메서드 호출)**을 위해 Joinpoint.proceed()를 호출PointcutAOP 에서 Advice 가 적용될 메소드나 클래스를 정의하는 것으로서 어드바이스가 실행되어야 하는 '적용 지점'이나 '조건' 지정ClassFilter 와 MethodMatcher를 사용해.. 포인트 컷 메서드 보안 구현 - AspectJExpressionPointcut / ComposablePointcout 메서드 보안은 AOP 를 기반으로 구축되었기 때문에 어노테이션이 아닌 패턴 형태로 권한 규칙을 선언 가능 → 요청 수준의 인가와 유사한 방식자체 어드바이저(Advisor)를 발행하거나 포인트컷(PointCut)을 사용하여 AOP 표현식을 애플리케이션의 인가 규칙에 맞게 매칭할 수 있으며 이를 통해 어노테이션을 사용하지 않고도 메소드 수준에서 보안 정책을 구현 가능AspectJExpressionPointcut을 사용하기 위해서는 spring-boot-start-aop 의존성 추가 필요빈 정의하기 - 단일 포인터컷 *execution(io.security.MyService.user(..))execution = 실행* = 반환값 ( * = 반환타입 관계없음)io.security.MyService.user = .. 메서드 기반 Custom AuthorizationManager 구현 사용자 정의 AuthorizationManager 를 생성함으로 메서드 보안을 구현 가능설정 클래스 정의@EnableMethodSecurity(prePostEnabled = false) // 시큐리티가 제공하는 클래스들을 비활성화 한다. 그렇지 않으면 중복해서 검사하게 된다@Configurationpublic class MethodSecurityConfig { @Bean @Role(BeanDefinition.ROLE_INFRASTRUCTURE) public Advisor preAuthorize() { return AuthorizationManagerBeforeMethodInterceptor.preAuthorize(new MyPreAuthorizationManager()); } @Bean @Role(Be.. 이전 1 ··· 4 5 6 7 8 9 10 ··· 13 다음