본문 바로가기
Spring|Spring-boot

Spring Security(3)

by oncerun 2021. 3. 28.
반응형

 

Spring Security를 사용하는 프로젝트에서 로그인을 한다는 것은 Authentication 객체가 SecurityContext에 존재하며 authenticated의 변수가 true의 값을 가지고 있을 때를 말합니다.

저번에 살펴봤던 spinrgSecurity필터들 중 Authentication을 검사하는 필터가 존재합니다. 이러한 필터들은 다양한 인증방법을 제공합니다.  실제 구현체들을 인증 토큰이라고 합니다. 예를 들어 BasicFileter를 거치게 되어 정상적으로 인증이 된다면 Basic Token을 제공해주고 JWT, Bearer토큰 등 다양한 정책을 가진 필터들이 존재합니다.

 

이들 필터가 하는 일은 AuthenticationManager 를 통해 Authentication을 인증하고 그 결과를 SecurityContextHolder에 넣어주는 일입니다.

 

우선 Authentication 객체는 Authenticationprovider를 통해 제공되는데 인증 제공자와  인증 제공관리자인 providerManger는 나중에 알아보고 Authentication에 집중하도록 하겠습니다.

 

Authentication 은 인터페이스로 아래와 같은 정보들을 갖고 있습니다.

  • Set<GrantedAuthority> authorities : 인증된 권한 정보
  • principal : 인증 대상에 관한 정보. 주로 UserDetails 객체가 옴
  • credentials : 인증 확인을 위한 정보. 주로 비밀번호가 오지만, 인증 후에는 보안을 위해 삭제함.
  • details : 그 밖에 필요한 정보. IP, 세션정보, 기타 인증 요청에서 사용했던 정보들.
  • boolean authenticated : 인증이 되었는지를 체크함.

 

각 구현체들은 인증을 통해서 토큰을 제공해줍니다.

 

  • 인증 토큰(Authentication)을 제공하는 필터들
    • UsernamePasswordAuthenticationFilter : 폼 로그인 -> UsernamePasswordAuthenticationToken
    • RememberMeAuthenticationFilter : remember-me 쿠키 로그인 -> RememberMeAuthenticationToken
    • AnonymousAuthenticationFilter : 로그인하지 않았다는 것을 인증함 -> AnonymousAuthenticationToken
    • SecurityContextPersistenceFilter : 기존 로그인을 유지함(기본적으로 session을 이용함)
    • BearerTokenAuthenticationFilter : JWT 로그인
    • BasicAuthenticationFilter : ajax 로그인 -> UsernamePasswordAuthenticationToken
    • OAuth2 LoginAuthenticationFilter : 소셜 로그인 -> OAuth2 LoginAuthenticationToken, OAuth2 AuthenticationToken
    • OpenIDAuthenticationFilter : OpenID 로그인
    • Saml2 WebSsoAuthenticationFilter : SAML2 로그인
    • ... 기타
  • Authentication을 제공(Provide) 하는 인증 제공자는 여러 개가 동시에 존재할 수 있고, 인증 방식에 따라 ProviderManager 도 복수로 존재할 수 있습니다.

 

 

반응형

'Spring|Spring-boot' 카테고리의 다른 글

Spring Transaction(2)  (0) 2021.04.03
Spring Transaction  (0) 2021.04.03
[Spring ] 빈 객체의 초기화와 소멸  (0) 2021.01.25
[Spring] 의존 자동 주입 대상의 필수 유무설정  (0) 2021.01.25
JWT(2)  (0) 2020.08.18

댓글