스프링 프레임워크에서 로그인을 한다는 것은 authenticated 가 true 인 Authentication 객체를 SecurityContext에 갖고 있는 상태를 말한다. 단 .Authentication이 AnonymouseAuthenticationToken이 아니여야 한다.
Authentication 의 기본 구조
security filter chain 의 몇몇 필터는 authentication을 제공하는 역할을 한다 이를 authenticationProvider 라고 하며 ,
authenticationProvider는 한개 이상이 존재할 수 있고 authenticationProvider는 하나의 authenticationManager 참조하고 이를 통해 관리된다. ProviderManager는 authenticationManager의 구현체이다.
authentication은 인터페이스이고 이를 구현한 구현체들이 토큰 방식으로 구현되어 있기떄문에 authentication을 인증 토큰이라고 한다 .
authentication을 제공하는 필터는 아래와 같다 .
- UsernamePasswordAuthenticationFilter : 폼 로그인
- RememberMeAuthenticationFilter : remember-me 쿠키 로그인
- SecurityContextPersistenceFilter: 기존 로그인을 유지함(기본적으로 session 이용)
- AnonymouseAuthenticationFilter : 로그인하지 않았다는 것을 인증
- BearerTokenAuthenticationFilter :JWT 로그인
- BasicAuthenticationFilter : ajax 로그인
( authorization 헤더에 usernamepassword 담아서 토큰을 담아서 Base64로 변환하여 서버로 전송하면 필터단에서 요청을 바로 수행하고 요청url로 보내줌 로그인 페이가 필요없는 SPA나 모바일 환경에서 사용되며 세션이있는 경우에 사용된다 세션이 없는 경우 JWT를 많이 사용한다.)
- OAuth2LoginAuthenticationFilter : 소셜 로그인 (OAuth2 규약을 따르는 로그인 API호출을 통한 로그인)
- OpenIDAuthenticationFilter : OpenID로그인
- Saml2WebSssoAuthenticationFilter :SAML2 로그인
authentication에는 아래와 같은 정보들이 담겨 있다.
-GrantedAuthority(권한) : Set<GrantedAuthority> authorities :인증된 권한 정보
-UserDetails (Principal)(인증대상) : 인증 대상에 관한 정보 , 주로 UserDetails 객체를 사용한다.
-credentials(비밀번호) : 인증 확인을 위한 정보 , 주로 비밀번호 ,인증 후에는 보안을 위해 삭제 필요
-details(유저 정보) : 그 밖에 필요한 정보 , IP ,세션정보 , 기타 인증요청에서 사용한 정보
-boolean authenticated: 인증되었는지 불린값.
'Spring Security' 카테고리의 다른 글
스프링시큐리티 공부 6 - RoleHierarchy, authenticationDetailsSource 설정하기 (1) | 2021.06.29 |
---|---|
스프링시큐리티 공부 5 - form 로그인 1 (0) | 2021.06.29 |
스프링시큐리티 공부 3 - 스프링 시큐리티 작동방식 (0) | 2021.06.27 |
스프링시큐리티 공부 2 - 사용자 추가 (0) | 2021.06.27 |
스프링시큐리티 공부 1 - 스프링 시큐리티란? (0) | 2021.06.27 |