반응형

관련 용어

인증(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를 통해 예외 처리
반응형

+ Recent posts