반응형
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 |
댓글