Spring Security.ch4

이호영·2022년 5월 11일
0

SpringSecurity

목록 보기
4/6

Spring 로그인

Spring Security에서 로그인이라는 것은 Security Context안에 있는 authenticaion 객체가 authenticated가 true인 상황을 로그인 한것으로 판단한다.
하지만 AnonymouseAuthenticationToken은 Authenticated가 true여도 Anonymouse 상태이기 때문에 로그인 하지않은 사용자로 간주

인증의 기본 구조

SecurityCotextHolder는 인증보관소이고 SecurityContext가 Authentication을 보관하는 인증 보관함이 된다.
인증을 제공하는 것을 AuthenticationProvider(인증제공자)이라 하며 하나 이상 존재할 수 있습니다.
인증 제공자를 관리하는 것을 AuthenticationManager(인증관리자)라고 하며 인증관리자를 구현하고 있는 구현체가 ProviderManager(인증 제공 관리자)라고 하며 마찬가지로 하나이상 존재할 수 있다.
Authentication안에는 GrantedAuthority,credentials,details등이 존재한다.

Authentication(인증토큰)을 제공하는 filter들

UsernamePasswordAuthenticationFilter : 폼 로그인 -> UsernamePasswordAuthenticationToken

RememberMeAuthenticationFilter : remember-me 쿠키 로그인 -> RememberMeAuthenticationToken

AnonymousAuthenticationFilter : 로그인하지 않았다는 것을 인증함 -> AnonymousAuthenticationToken

SecurityContextPersistenceFilter : 기존 로그인을 유지함
(기본적으로 session 을 이용함)

BearerTokenAuthenticationFilter : JWT 로그인

BasicAuthenticationFilter : ajax 로그인 -> UsernamePasswordAuthenticationToken

OAuth2LoginAuthenticationFilter : 소셜 로그인 ->
OAuth2LoginAuthenticationToken, OAuth2AuthenticationToken

OpenIDAuthenticationFilter : OpenID 로그인

Saml2WebSsoAuthenticationFilter : SAML2 로그인

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

Set authorities : 인증된 권한 정보

principal : 인증 대상에 관한 정보. 주로 UserDetails 객체가 옴

credentials : 인증 확인을 위한 정보. 주로 비밀번호가 오지만, 인증 후에는 보안을 위해 삭제함.

details : 그 밖에 필요한 정보. IP, 세션정보, 기타 인증요청에서 사용했던 정보들.(request에 대한 detail정보)(principal details와 다름)

boolean authenticated : 인증이 되었는지를 체크함

0개의 댓글