[Spring Security] Authentication의 구조

SeongWon Oh·2021년 11월 23일
0

Spring Framework

목록 보기
26/33
post-thumbnail

Authentication의 구조

  • Spring에서 로그인을 한다는 것은 SecurityContext가 authenticated가 true인 Authentication 객체를 갖고 있는 상태를 말한다. (※ 이때 authintication은 AnonymousAuthenticationToken이 아니어야한다.)
  • SecurityContextHolder는 인증을 보관하는 보관소이며 Authentication을 갖고 있는 SecurityContext를 보관한다.
  • AuthenticationProvider은 Authentication을 제공하며 이는 여러개가 존재할 수 있다.
  • AuthenticationProvider를 관리하는 Interface를 AuthenticationManager라고 하며 ProviderManager는 AuthenticationManager를 구현한다.
  • Authentication은 권한의 정보와 인증 대상에 대한 Principal(접근 주체), Credential(비밀번호)의 정보를 갖는 인터페이스이다.

    Authentication에 들어가는 내용

    Set <GrantedAuthority> authorities : 인증된 권한 정보 목록
    principal : 인증 대상에 관한 정보로 사용자의 아이디 혹은 User객체가 저장된다.
    credentials : 인증 확인을 위한 정보로 주로 비밀번호가 온다. (※ 인증 후에는 보안을 위해 삭제한다.)
    details : 그 밖에 필요한 정보로 IP, 세션정보, 기타 인증요청에서 사용했던 정보들이 들어간다.
    boolean authenticated : 인증이 되었는지를 체크한다.

Authentication을 제공하는 필터

  • UsernamePasswordAuthenticationFilter : 폼 로그인을 처리해준다.
  • OAuth2LoginAuthenticationFilter : 소셜 로그인을 처리해준다.
  • RememberMeAuthenticationFilter : remember-me 쿠키 로그인을 처리해준다.
  • AnonymousAuthenticationFilter : 로그인하지 않았다는 것을 인증해준다.
  • SecurityContextPersistenceFilter : 기존 로그인을 유지해준다. (기본적으로 session 을 이용함)
  • BearerTokenAuthenticationFilter : JWT 로그인을 처리해준다.
  • BasicAuthenticationFilter : ajax 로그인 (Session이 있는 경우에 사용)
  • OpenIDAuthenticationFilter : OpenID 로그인을 처리해준다.

Reference

profile
블로그 이전했습니다. -> https://seongwon.dev/

0개의 댓글