본문 바로가기

반응형

Spring/Spring Security

(7)
UserDetailService & PasswordEncoderFactories UserDetailService 유저 정보를 가지고, 인증을 하는 인터페이스이다. 이 인터페이스를 이용하여, DAO (DataAccessObject)를 통해서 DB에 저장되어 있는 유저 정보를 이용하여 인증을 하도록 구현체를 생성하여 커스터마이징 할 수 있다. Spring Security는 인증 사용자 정보를 UserDetails 타입의 객체를 통해 관리한다. @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { Account account = accountRepository.findByUsername(username); if (account == null) { throw new ..
스프링 시큐리티 아키텍처 스프링 시큐리티 아키텍처 정리 요청이 서블릿 컨테이너에 들어오면, delegatingFilterProxy라는 서블릿 필터가 등록이 되면, FilterChainProxy는 springSecurityFilterChain 이라는 이름으로 빈이 등록된다. 참고 https://spring.io/guides/topicals/spring-security-architecture https://docs.spring.io/spring-security/site/docs/5.1.5.RELEASE/reference/htmlsingle/#overall-architecture
ExceptionTranslationFilter 필터 체인에서 발생하는 AccessDeniedException과 AuthenticationException을 처리하는 필터 AuthenticationException 발생 시 (인증 실패 시) AuthenticationEntryPoint(인증 처리기) 실행 AbstractSecurityInterceptor 하위 클래스(예, FilterSecurityInterceptor)에서 발생하는 예외만 처리. 그렇다면 UsernamePasswordAuthenticationFilter에서 발생한 인증 에러는 ExceptionTranslationFilter가 처리하는 것이 아닌 UsernamePasswordAuthenticationFilter 안에서! 에러 처리 로직이 들어있음 AccessDeniedException 발..
AccessDecisionManager 인증 : AuthenticationManager 인가 : AccessDecisionManager AccessDecisionManager AccessDecisionManager는 여러개의 voter를 가질 수 있다. 여러 목록의 voter를 거치면서 유효한 지 확인 spring security가 role hierarchy를 이해할 수 있도록, AccessDecisionManager에 설정 Access Control 결정을 내리는 인터페이스로, 구현체 3가지를 기본으로 제공한다. AffirmativeBased: 여러 Voter중에 한명이라도 허용하면 허용. 기본 전략. ConsensusBased: 다수결 UnanimousBased: 만장일치 AccessDecisionVoter 해당 Authentication..
Spring Security Architecture SecurityContextHolder와 Authentication https://docs.spring.io/spring-security/site/docs/5.1.5.RELEASE/reference/htmlsingle/#core-components SecurityContextHolder SecurityContext 제공, 기본적으로 ThreadLocal을 사용한다. ThreadLocal 이란, 하나의 스레드 내에 국한하여 공유할 수 있는 기능 (자세한 설명은 아래에) SecurityContextHolder만 알고 있으면, 인증 정보를 가져올 수 있다. SecurityContext Authentication 제공. Authentication Principal과 GrantAuthority 정보를 제공. Pr..
Spring Security OAuth2 OAuth란? https://minwan1.github.io/2018/02/24/2018-02-24-OAuth/#undefined Wan Blog WanBlog | 개발블로그 minwan1.github.io accessDecisionManager
Authentication Handler AuthenticationSuccessHandler 인터페이스를 재정의 하는 추상 클래스 생성, 성공 시에 호출하는 메소드 onAuthenticationSuccess를 override하여 success시의 로직을 처리할 메소드를 호출해준다. 이 메소드는 해당 추상 클래스를 상속받은 클래스에서 override하여 구현해주면 된다. onAuthenticationSuccess 메소드 호출 시 인자로 넘어오는 객체 HttpServletRequest 객체: 웹에서 넘어온 Request 값을 가지고 있는 객체 HttpServletResponse 객체: 출력을 정의할 수 있는 객체 Authentication 객체: 인증에 성공한 사용자의 정보를 가지고 있는 객체 ps >http://gdthink.blogspot.co..

반응형