Spring Security 로그 인 인증 프로 세 스 원본 분석

1.로그 인 인증 필터 체인 기반
Spring Security 의 로그 인 인증 프로 세 스 핵심 은 필터 체인 입 니 다.요청 이 도 착 했 을 때 필터 체인 의 순서에 따라 순서대로 처리 하고 모든 필터 체인 의 검증 을 통 해 API 인터페이스 에 접근 할 수 있 습 니 다.

SpringSecurity 는 다양한 로그 인 인증 방식 을 제공 합 니 다.예 를 들 어 다음 과 같은 필터 로 이 루어 집 니 다.
  • Basic AuthenticationFilter 는 Http Basic 모드 의 로그 인 인증
  • 을 실현 합 니 다.
  • UsernamePassword Authentication Filter 사용자 이름 비밀번호 로그 인 인증 실현
  • Remember MeAuthenticationFilter 로그 인 인증 을 실현 하 는'나 를 기억 해'기능
  • SmsCodeAuthenticationFilter 문자 인증 코드 로그 인 인증 실현
  • SocialAuthenticationFilter 소 셜 미디어 방식 로그 인 인증 처리
  • Oauth 2 authentication Processing Filter 와 Oauth 2 client Authentication Processing Filter 는 Oauth 2 의 감 권 방식 을 실현 한다.
  • 우리 의 서로 다른 수요 실현 및 설정 에 따라 서로 다른 Filter 는 응용 프로그램 에 불 러 옵 니 다.
    2.소스 코드 와 결합 하여 로그 인 검증 절 차 를 설명 합 니 다.
    사용자 이름,비밀번호 로그 인 방식 을 예 로 들 어 Spring Security 의 로그 인 인증 절 차 를 설명 합 니 다.

    2.1 UsernamePasswordAuthenticationFilter
    이 필 터 는 사용자 의 기본 정보(사용자 이름,비밀번호)를 봉인 하고 로그 인 폼 데이터 가 관련 정 보 를 받 는 것 을 정의 합 니 다.예:
  • 기본 폼 사용자 이름 비밀번호 input 상자 name 은 username,password
  • 입 니 다.
  • 로그 인 요청 을 기본 으로 처리 하 는 경 로 는/login 이 고 POST 방법 을 사용 합 니 다.


  • 2.2 Abstract AuthenticationProcessingFilter 의 doFilter 방법의 검증 과정
    UsernamePassword AuthenticationFilter 는 추상 적 인 클래스 인 Abstract AuthenticationProcessingFilter 를 계승 합 니 다.이 추상 적 인 클래스 는 검증 성공 과 검증 실패 의 처리 방법 을 정의 합 니 다.

    2.3 검증 에 성공 한 Handler 와 검증 에 실패 한 handler

    인증 이 성공 하거나 실패 한 처리 방법 을 사용자 정의 해 야 할 때 AuthenticationSuccessHandler 나 Authenticationfailure Handler 인 터 페 이 스 를 실현 해 야 한 다 는 것 이다.

    3.로그 인 검증 내부 세부 사항
    3.1 다양한 인증 방식 의 관리 Provider Manager
    Provider Manager 는 AuthenticationManager 에 계승 되 는 로그 인 인증 의 핵심 클래스 입 니 다.Provider Manager 는 여러 개의 AuthenticationProvider 를 보관 하여 다양한 유형의 로그 인 인증 에 사용 합 니 다.예 를 들 면:
  • Remember MeAuthenticationProvider 는'나 를 기억 해'기능 의 로그 인 검증 논 리 를 정의 했다
  • Dao AuthenticationProvider 는 데이터베이스 사용자 정 보 를 불 러 와 사용자 암호 의 로그 인 인증 을 실시한다
  • public class ProviderManager implements AuthenticationManager, MessageSourceAware, InitializingBean {
        ……
        private List providers;
        ……
    다음은 Provider Manager 의 핵심 소스 입 니 다.서로 다른 로그 인 인증 을 옮 겨 다 니 는 AuthenticationProvider 입 니 다.이러한 방식 이 지 원 될 때 만 구체 적 인 로그 인 인증 논 리 를 실행 합 니 다.

    3.2 로그 인 인증 인터페이스 인증 공급 자
    
    public interface AuthenticationProvider {
     Authentication authenticate(Authentication var1) throws AuthenticationException;
     boolean supports(Class<?> var1);
    }
    AuthenticationProvider 의 실현 클래스 는 구체 적 인 로그 인 검증 논 리 를 정의 합 니 다.

    3.3 데이터베이스 에 사용자 정보 불 러 오기 DaoAuthenticationProvider
    
    public class DaoAuthenticationProvider extends AbstractUserDetailsAuthenticationProvider {
    데이터베이스 에서 사용자 정보 원본 가 져 오기

    따라서 사용자 정 보 를 불 러 와 로그 인 인증 을 해 야 할 때 UserDetailsService 인 터 페 이 스 를 실현 하고 loadUserByUsername 방법 을 다시 써 야 합 니 다.인 자 는 사용자 가 입력 한 사용자 이름 입 니 다.반환 값 은 User Details 입 니 다.
    총결산
    위 에서 말씀 드 린 것 은 편집장 님 께 서 소개 해 주신 Spring Security 로그 인 인증 절차 원본 입 니 다.여러분 께 도움 이 되 셨 으 면 합 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 님 께 서 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
    만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!

    좋은 웹페이지 즐겨찾기