Spring Security docs로 공부하기 (#03)

1

Spring Security

목록 보기
3/5
post-thumbnail

Spring Security인증에 대한 포괄적인 지원을 제공한다.


Authentication Mechanisms

  1. 사용자 이름 및 비밀번호 - 사용자 이름/비밀번호로 인증하는 방법
  2. OAuth 2.0 로그인 - OAuth 2.0 OpenID Connect비표준 OAuth 2.0 로그인 (ex: 네이버 로그인, 카카오 로그인, 깃허브 로그인 ..)
  3. SAML 2.0 로그인 : SAML 2.0 로그인
  4. 중앙 인증 서버(CAS) : 중앙 인증 서버 지원
  5. RememberMe : 세션 만료 후 사용자 정보를 기억함
  6. JAAS 인증 : JAAS로 인증
  7. OpenID : OpenID 인증(OpenID Connect와 혼동 X)
  8. 사전 인증 시나리오 : SiteMinder 또는 Java EE 보안과 같은 외부 매커니즘으로 인증을 하지만 일반적인 악용에 대한 권한 부여 및 보호를 위해 여전히 Spring Security를 사용
  9. X509 인증 : X509 인증

간단하게 스프링 시큐리티 내에서 폼 기반 로그인이 어떻게 작동하는지 살펴보자.


Form Login

Spring Security는 html 형식을 통해 제공되는 사용자 이름과 비밀번호에 대한 지원을 제공한다.

인증되지 않은 상태(로그인 X)에서 권한이 필요한 리소스에 접근하려고 할 때

  1. 먼저 사용자가 권한이 없는 리소스 /private에 대해 인증되지 않은 요청을 한다.
  2. Spring Security는 인증 FilterSecurityinterceptor되지 않은 요청이 AccessDeninedException에 의해서 ExceptionTranslationFilter로 반환된다.
  3. 사용자가 인증되지 않았으므로 로그인 페이지로 리디렉션한다.
  4. 브라우저는 리디렉션된 로그인 페이지를 요청한다.
  5. 애플리케이션 내에서 로그인 페이지를 렌더링 한다.

로그인 페이지가 렌더링 되고 사용자가 사용자 이름암호를 제출하면 UsernamePasswordAuthenticationFilter로 인증한다.

로그인 과정

  1. 사용자 이름암호를 추출하여 UsernamePasswordAuthenticationFilter를 거친다.
  2. UsernamePasswordAuthenticationToken으로 전달된다.
  3. 인증에 실패하면 Failure
    • SecurityContextHolder가 지워진다.
    • RememberMeServices.loginFail이 호출된다.
    • AuthenticationFailureHandler가 호출된다.
  4. 인증에 성공하면 Success
    • SessionAuthenticationStrategy에서 새로운 로그인 알림을 받음
    • RememberMeServices.loginSuccess 호출
    • ApplicationEventPulbisher 발행
    • AuthenticationSuccessHandler 호출 일반적으로 이것은 로그인 페이지로 리디렉션할 때 SimpleUrlAuthenticationSuccessHandler 저장된 요청으로 리디렉션

0개의 댓글