Spring Security

김도엽·2022년 6월 6일
0

Java Spring Boot

목록 보기
5/10
post-thumbnail

기본 구조

필터별 기능 설명

  • SecurityContextPersistenceFilter
    SecurityContextRepository에서 SecurityContext를 로드하고 저장하는 일을 담당함
  • LogoutFilter
    로그아웃 URL로 지정된 가상URL에 대한 요청을 감시하고 매칭되는 요청이 있으면 사용자를 로그아웃시킴
  • UsernamePasswordAuthenticationFilter
    사용자명과 비밀번호로 이뤄진 폼기반 인증에 사용하는 가상 URL요청을 감시하고 요청이 있으면 사용자의 인증을 진행함
  • DefaultLoginPageGeneratingFilter
    폼기반 또는 OpenID 기반 인증에 사용하는 가상URL에 대한 요청을 감시하고 로그인 폼 기능을 수행하는데 필요한 HTML을 생성함
  • BasicAuthenticationFilter
    HTTP 기본 인증 헤더를 감시하고 이를 처리함
  • RequestCacheAwareFilter
    로그인 성공 이후 인증 요청에 의해 가로채어진 사용자의 원래 요청을 재구성하는데 사용됨 SecurityContextHolderAwareRequestFilter HttpServletRequest를 HttpServletRequestWrapper를 상속하는 하위 클래스(SecurityContextHolderAwareRequestWrapper)로 감싸서 필터 체인상 하단에 위치한 요청 프로세서에 추가 컨텍스트를 제공함
  • AnonymousAuthenticationFilter
    이 필터가 호출되는 시점까지 사용자가 아직 인증을 받지 못했다면 요청 관련 인증 토큰에서 사용자가 익명 사용자로 나타나게 됨
  • SessionManagementFilter
    인증된 주체를 바탕으로 세션 트래킹을 처리해 단일 주체와 관련한 모든 세션들이 트래킹되도록 도움
  • ExceptionTranslationFilter
    이 필터는 보호된 요청을 처리하는 동안 발생할 수 있는 기대한 예외의 기본 라우팅과 위임을 처리함
  • FilterSecurityInterceptor
    이 필터는 권한부여와 관련한 결정을 AccessDecisionManager에게 위임해 권한부여 결정 및 접근 제어 결정을 쉽게 만들어 줌

출처: https://devuna.tistory.com/55 [튜나 개발일기:티스토리]



시큐리티 관련 함수 정리

authorizeRequests() : 요청에 대한 권한 지정. Security 처리에 HttpServletRequest를 이용한다는 것을 의미한다.
antMatchers() : 특정 경로를 지정합니다. 보통 뒤에 다른 메서드가 붙습니다.
anyRequest() : 설정한 경로 외에 모든 경로를 뜻합니다.
authenticated() : 인증된 사용자만이 접근할 수 있습니다.
permitAll() : 어떤 사용자든지 접근할 수 있습니다.
hasRole() : 특정 ROLE을 가지고 있는 사람이 접근할 수 있습니다.
hasAuthority() : 특정 권한을 가지고 있는 사람만 접근할 수 있습니다. hasRole과 비슷하다고 볼 수 있습니다.
csrf() : CSRF 보안에 대한 설정입니다. 아무 설정도 하지 않으면 CSRF 보안을 하도록 설정됩니다.
disable() : 해당 기능을 해제 합니다. 여기서는 csrf()를 해제합니다.
unauthorizedEntryPoint는 AuthenticationEntryPoint가 리턴값입니다.


formLogin() : form 기반의 로그인을 할 수 있습니다.
loginPage() : 로그인 페이지의 URL을 설정합니다.
failureUrl() : 로그인에 실패했을 때에 해당 URL로 가게 합니다.
defaultSuccessUrl() : 로그인에 성공했을 때에 아무런 설정을 하지 않았을 시 넘어가는 페이지를 설정합니다.
successHandler() : defaultSuccessUrl과 비교해서 비슷하다고 생각할 수 있지만, 로그인에 성공했을 때 내가 원하는 대로 설정할 수 있습니다. 대신 () 안에 해당 객체를 넣어줘야 합니다.
failureHandler() : failureUrl과 비슷하지만, 로그인에 실패했을 때 내가 원하는 대로 설정합니다.
logout() : 로그아웃에 대해 설정할 수 있습니다.
logoutRequestMatcher() : 로그아웃을 실행할 주소를 나타냅니다. 새롭게 로그아웃 주소를 설정할 수 있습니다.
cf. logoutUrl() : 로그아웃을 실행할 주소를 나타낸다. 기본값으로 "/logout"이 적용된다고 합니다.
AntPathRequestMatcher() : HTTP 메서드와 일치하는 특정 패턴으로 Matcher를 작성합니다. AntPathRequestMatcher는 다른 곳에서도 종종 볼 수 있습니다.
logoutSuccessUrl() : 로그아웃을 성공했을 때 이동하는 페이지를 설정합니다.
sessionManagement() : 세션에 관한 설정을 한다.
sessionCreationPolicy() : 세션 create에 대해 설정한다.
SessionCreationPolicy.STATELESS : HTTPSession을 생성하지 않고 SecurityContext를 얻기 위해 HTTPSession을 사용하지 않는다.
exceptionHandling() : 예외사항을 설정한다.
authenticationEntryPoint() : 인증의 진입지점을 설정한다.
addFilter(filter, CLASS) : 지정된 필터 클래스 뒤에 필터를 추가한다.
UsernamePasswordAuthenticationfilter : Spring에서 기본적으로 제공하는 클래스이다. username과 password를 매개변수로 받는다.




usernameParameter() : 로그인에 사용될 파라미터 지정. 아이디 부분이 된다.
passwordParameter() : 로그인에 사용될 파라미터 지정. 비밀번호 부분이 된다.
invalidateHttpSession() : 로그아웃 시 인증정보를 지우고 설정된 세션을 무효화 시킨다는 설정
authenticationProvider() : AuthenticationProvider를 추가로 사용하게 허용한다.
-> AuthenticationProvider는 인터페이스로 화면에서 입력한 로그인 정보와 DB에서 가져온 사용자 정보를 비교해주는 인터페이스이다.
cors() : REST API를 개발할 때 백엔드와 프론트엔드를 연결하기 위하여 사용한다.
configurationSource() : cors 요청에 따라 어떤 방법으로 해결할 지 방법을 지정
httpBasic() : Basic Authentication을 정의할 때 사용한다.

profile
즐거운

0개의 댓글