서비스 인증과 권한 부여

인증과 인가

  1. 인증: 사용자가 누구인지 확인하는 단계 ex) 로그인
    • 로그인 시 토큰 발급 → 서비스 사용시 서버에 토큰 전달하여 사용자 인증
    • 로그인 실패 시 토큰을 전달받지 못해 접근 불가
  2. 인가: 사용자가 리소스에 접근할 때 접근할 권리가 있는지 확인하는 과정
    • ex) 사용자 등급 확인 후 접근 등급이 맞는 경우 게시판 접근 가능

스프링 시큐리티

애플리케이션의 인증, 인가 등의 보안 기능을 제공하는 스프링 하위 프로젝트

보안과 관련된 여러 기능을 제공한다.

동작 구조

서블릿 필터 기반으로 동작

  1. 클라이언트 요청
  2. 서블릿 컨테이너: URI 확인 후 필터와 서블릿 매핑
  3. 스프링 시큐리티: 사용하려는 필터 체인을 서블릿 컨테이너의 필터 사이에서 동작시킨다.
    • DelegatingFilterProxy 사용

DelegatingFilterProxy 서블릿 컨테이너의 생명주기와 스프링 애플리케이션 컨텍스트 사이 다리역할을 수행하는 필터 구현체 - 표준 서블릿 필터 구현 - 내부에 필터체인 FilterChainProxy을 통해 역할 위임

FilterChainProxy - 스프링의 자동설정에 의해 자동 생성 - 보안 필터체인을 통해 많은 보안 필터 사용 가능 - 여러 보안 필터체인을 사용하기 위해 WebSecurityConfigureAdapter 클래스를 상속받아 설정 - 별도의 설정이 없을 경우 UsernamePasswordAuthenticationFilter를 통해 인증 처리

UsernamePasswordAuthenticationFilter 인증 과정

  1. 클라이언트 요청
  2. 서블릿 필터: SecurityFilterChain으로 위임
  3. 별도의 설정이 없는 경우 UsernamePasswordAuthenticationFilter에서 인증 처리
  4. AuthenticationFilter: 요청 객체에서 아이디와 password를 통해 토큰 생성
  5. 생성된 토큰 AuthenticationManger에 전달
  6. ProviderManger: 인증을 위해 토큰 정보를 userDetailService에 전달
  7. 생성된 UserDeatils객체를 AuthenticationProvider로 전달
  8. 해당 Provider에서 인증 수행
  9. 성공할 경우 ProviderManger로 권한을 담은 토큰 전달
  10. ProviderManger: 검증된 토큰 AuthenticationFilter로 전달 11: AuthenticationFilter: 검증된 토큰을 SecurityContextHolder의 SecurityContext에 저장

homebdy
homebdy 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람.
comments powered by Disqus