springframework/시작하자SpringSecurity 44

39.FilterInvocationSecurityMetadataSource (1)

FilterInvocationMetadataSource SecurityMetadatasource 를 구현한 클래스가 FilterInvocationSecurityMetadataSource 다. UrlFilterInvocationSecurityMatadataSource 라는 이름으로 구현 어떤 기능을 구현하는가 사용자가 접근하고자 하는 Url 자원 대한 권한 추출 AccessDecisionManager 에게 전달하여 인가처리 요청 DB 에서 자원, 권한 정보를 매핑하여 Map으로 관리 함 사용자 요청에 매핑된 권한정보 확인 구현 흐름 사용자의 요청 FilterInvocationMetadataSource에는 DB 에서 받은 권한, 자원정보를 가지고 Map객체에 저장 요청정보에 대한 권한정보를 추출 권한 목록 ..

38.인가프로세스의 아키텍쳐

인가프로세스의 아키텍쳐 FilterSeucrityInterceptor 가 인증정보, 요청정보, 권한정보를 추출 AccessDecisionManager 에게 정보들을 주어 인가처리를 함 인증, 요청, 권한 정보의 수집 인증정보는 SecurityContext의 Authentication 객체에 있다. 요청정보는 FilterInvocation 객체를 생성해 요청정보를 저장한뒤 반환한다. 권한정보는 List 타입의 ConfigAttribute 으로 반환한다. 유저의 Request SecurityInterceptor 가 작동 Authentication 에서 인증정보 추출 FilterInvocation 에서 요청정보 추출 권한정보를 추출할 때는 ConfigAttribute 타입의 List를 반환 SecurityIn..

37. 동적 인가 방식 개요

DB 연동 및 인가 선언적 방식은 사용하지 않는다. 실제 서비스에 적합하지 않다. DB 와 연동하여 동적으로 자원과 권한을 설정하고 제어한다. 관리자 시스템 구축 회원 관리 - 권한 부여 권한 관리 - 권한 생성, 삭제 자원 관리 - 자원 생성, 삭제, 수정, 권한 매핑 권한 계층 구현 방식 2가지로 나뉜다. URL - Url 요청시의 인가처리 Method - 메서드 호출시의 인가처리 메서드 방식의 권한계층 구현은 다시 2가지로 나뉜다. Method Pointcut

38.AjaxLoginUrlAuthenticationEntryPoint, AjaxAccessDeniedHandler

AuthenticationEntryPoint , AccessDeniedHandler 를 구현하여 HttpSecurity 의 하위 API에 등록한다. AjaxAuthenticationEntryPoint 구현, response에 401상태코드를 던진다. 익명 사용자에 대한 AccessDeniedException 처리는 AuthenticationEntryPoint로 넘어가는 것을 기억하자. public class AjaxLoginAuthenticationEntryPoint implements AuthenticationEntryPoint { @Override public void commence(HttpServletRequest request, HttpServletResponse response, Authent..

37.AjaxAuthenticationSuccessHandler,AjaxAuthenticationFailureHandler

기본적인 흐름은 AuthenticationSuccessHandler , AutheticationFailureHandler 의 구성방법과 동일. CustomAjaxAuthenticationSuccessHandler jackson 의 ObjectMapper 를 사용하여 json 값으로 메시지를 넘긴다. HttpStatus 를 주는 점을 주목한다. Authentication 객체에는 유저정보인 AjaxAuthenticationToken 이 있기 때문에(구현) 가져와 값을 참조한다. public class CustomAjaxAuthenticationSuccessHandler implements AuthenticationSuccessHandler { private ObjectMapper objectMapper =..

36.CustomAjaxAuthenticationProvider

본 강의를 학습하는데 어려움이 따라 디버깅을 하여 해결한 그대로 기술한다. AuthenticationProvider 구현클래스는 Ajax 방식이라도 AuthenticationProvider 상속클래스와 동일 일단 학습과정에서 사용한 SecurityConfig 클래스 는 2개이므로, 2개의 클래스에 대해 SecurityFilterChain 이 만들어질 것이고, 나는 순서(@Order)를 정해줘야한다. CustomAuthenticationProvider Bean 을 지정. 매서드를 재정의 하여 AuthenticationManager 추출 configure(AuthenticationManagerBuilder) 에 AuthenticationProvider 등록 CutomAjaxAuthenticationFilte..

35.AjaxAuthenticationFilter

Ajax 요청방식에 대한 스프링 시큐티티의 전반적인 순차과정 중 처음인 AjaxAuthenticationFilter를 구현한다. AbstractAuthenticationProcessingFilter 상속. 작동조건을 AntPathRequestMatcher 로 매칭, 요청방식이 Ajax 라면 작동 AjaxAuthenticationToken 구현객체를 만들어 AuthenticationManager에게 전달 구현 AbstaractAuthenticationProcessingFilter 의 생성자를 가져와 AntPathRequestMatcher 에 경로를 설정한 것을 주목 isAjax 메서드를 만들어 X-Request-With 헤더 정보에 XMLHttpRequest 값이 있는지 검사(null-Safety 를 위해..

34. Ajax Authentication Flow

비동기적 인증방식 이며 , 기존의 FormLogin 방식과 동일하게 작동한다. Ajax 인증방식은 대부분 구현 객체들로 작동하기 때문에, AuthenticationFlow 를 이해하지 못한다면. 적용하기 힘든 기술이라는 것을 기억해야한다. 유저의 Request AjaxAuthenticationFilter작동 AjaxAuthenticationToken을 생성( 입력정보 ) AuthenticationManager 호출 AjaxAuthenticationProvider 에게 인증위임 UserDetailsService호출, 정보를 받고 AjaxAuthenticationProvider가 인증작업 진행 인증성공시 AjaxAuthenticationSuccessHandler 작동 인증 실패시 AjaxAuthenticat..