반응형
관련 용어
인증(Authentication)
- 사용자의 신원을 확인하는 과정을 말한다.
- ex) ID/PW를 입력하여 사용자 신원을 확인.
인가, 권한부여(Authorization)
- 사용자가 리소스에 접근할 수 있는지 확인하는 과정을 말한다.
- ex) 토큰을 전달하여 리소스 접근 가능 여부 확인.
IDP(Identity Provider)
- 사용자를 인증하거나 특정 리소스를 이용하도록 허가하는 서비스를 말한다.
- SAML, Oauth2, OIDC 같은 방식들이 있다.
- 제 3자에게 사용자 정보를 제공하는 Facebook, Google등이 IDP에 해당한다.
SAML
- 2001년 OASIS에서 정의한 개방형 Authentication(인증) 및 Authorization(인가) 표준
- 엔터프라이즈 애플리케이션의 SSO(Single Sign On)를 목적으로 XML(Extensible Markup Language) 형식으로 개발
OAuth
- 2006년 Twitter와 Google이 정의한 개방형 Authorization 표준
- API 허가를 목적으로 JSON(Javascript Object Notation) 형식으로 개발
- 인증을 완료하면 리소스에 접근할 수 있는 access_token을 응답하고, 클라이언트는 access_token를 리소스 접근을 위해 사용한다.
OIDC(OpenID Connect)
- 2014년 OpenID Foundation에서 정의한 개방형 Authentication 표준
- 컨슈머 어플리케이션의 SSO를 목적으로 JSON 형식으로 개발
- OAuth 2.0 프로토콜 기반으로 동작한다.
- OAuth에서 access_token을 응답할 때 id_token을 함께 응답한다.
- id_token은 사용자 정보를 JWT를 통해 암호화한 값을 말한다.
- OIDC를 사용할 경우 사용자 정보를 사용하기 위해 access_token으로 사용자 정보를 요청할 필요 없이 id_token을 복호화하여 바로 사용할 수 있다.
참고
주요 필터
SecurityContextHolderFilter
- HttpSessionSecurityContextRepository.loadDeferredContext() 를 호출하여 세션에 저장된 인증정보를 조회(세션키: SPRING_SECURITY_CONTEXT)
- ThreadLocalSecurityContextHolderStrategy.setDeferredContext() 를 호출하여 위에서 조회한 인증정보를 세팅
AuthenticationFilter
- 각 Authentication 방식에 맞춰 인증 처리 수행
- ex) UsernamePasswordAuthenticationFilter, BasicAuthenticationFilter 등
AnonymousAuthenticationFilter
- ThreadLocalSecurityContextHolderStrategy.getDeferredContext() 를 호출하여 인증정보가 존재하지 않을 경우 AnnonymousSecurityContext를 생성 후 컨텍스트에 세팅
ExceptionTranslationFilter
- 필터체인 실행 중 예외 발생시
- AuthenticationException 예외일 경우
- 세션에 DefaultSavedRequest 정보를 저장(세션키: SPRING_SECURITY_SAVED_REQUEST)
- LoginUrlAuthenticationEntryPoint.commence() 를 실행하여 로그인페이지로 리다이렉트
- AccessDeniedException 예외일 경우
- SecurityContextHolder에 저장된 컨텍스트가 AnnonymouseSecurityContext일 경우
- 위 AuthenticationException 예외일 경우 처리와 동일
- 나머지 컨텍스트일 경우
- AccessDeniedHandler를 통해 예외 처리
- SecurityContextHolder에 저장된 컨텍스트가 AnnonymouseSecurityContext일 경우
반응형
'Development > Spring Security' 카테고리의 다른 글
[Spring Security] WebSocketSecurity (0) | 2023.10.29 |
---|---|
[Spring Security] Jwt Authentication(Custom Filter로 직접 구현하기) (0) | 2023.10.29 |
[Spring Security] OAuth2 Authentication (0) | 2023.10.29 |
[Spring Security] Basic Authentication (0) | 2023.10.29 |
[Spring Security] Form Authentication (0) | 2023.10.29 |