AuthenticationEntryPoint 이해

존스노우·2023년 8월 12일
0

springSecurity

목록 보기
4/75

  • spring Security는 초기화 진행이 되면 기본적으로 2개 인증방식을 설정한다.

  • FormLogin / HttpBasic

  • 어떤 클래스에서 AuthenticationEntryPoint설정을 관장할까?

ExceptionHandlingConfigurer

  • 인증 예외 발생시 AuthenticationEntryPoint클래스를 통해서

  • 인증 예외 이후에 어떻게 할것인가? 설정하게 만드는게 클래스AuthenticationEntryPoint

  • AuthenticationEntryPoint 설정을 다하게 됨.

    FormLoginConfigurer

  • 인증 예외 발생시?

  • ExceptionHandlingConfigurer통해서 AuthenticationEntryPoint 객체를 만들어서 전달함

  • 최종적으로 예외발생시 AuthenticationEntryPoint 구현체가

  • LoginUrlAuthentiationEntry 임

  • 첫번째 LoginUrlAuthentiationEntry 를 전달받아서

  • ExceptionHandlingConfigurer가 어디에 저장?

  • defaultEntryPointMappings Map객체에 저장됨

  • 하나 이상의 AuthenticationEntryPoint 저장됨 (초기화때 이루어짐)

  • HttpBasicConfigurer 예외 발생시?

  • 구현 체를 만들어서 ExceptionHandlingConfigurer 설정안에 있는

  • defaultEntryPointMappings 추가함

  • 그 구현체는 BasicAuthenticationEntryPoint

  • 기본적으로는 2개가 일단. 생긴다.

    인증 예외가 발생한다 !

  • 두개 중 어떤 인증방식을 선택하더라도 처리는 되게 설정이 되있다.

    custom EntyPoint?

  • 내가 만약 custom한 EntyPoint를 만든다면 ?

  • 기존 디폴트로 설정된 건 무시하고 내가 설정한 방식으로 동작
    시큐리티랑 비슷?

  • AuthenticationEntryPoint 실제 어디에 저장되서 실행될까?

    ExceptionTranslationFilter

  • 여기에 저장 되서 실행됨

  • 최종 1개 도착

    default Entry Point

  • FormLogin / HttpBasic 설정안하면?

  • 기본적으로 Http403ForbiddenEntryPoint 실행

  • 이게 나왔다? 인증설정을 안했다는 것이다.

  • 두개 중 한개만 설정되있다? 하나만 그냥 ExceptionTranslationFilter 에전달

  • 두개 다? 두개 중 하나를 내부적인 로직으로 두 개 인증방식중 필요한 인증 방식을 선택해서 넘겨 준다. security가

    요약

  • 기본 적으로 2개의 인증 방식 생성

  • 각각의 인증 포인트를 만들어서 넘긴다.

  • 커스텀하개 만들면 커스텀한 설정이 넘어감.

  • 두개 중 하나만 설정하면 설정한 값만 넘어감

  • 두개 다 설정하면 내부적으로 선택해서 전달해서 실행함

  • 설정 안한 상태.

  • 이 화면으로 이동하게끔 하는게 AuthenticationEntryPoint

  • 이런 식 .

  • 상태에서 Http 나 formlogin 설정해도 동작안함.

  • 두개 설정하면? Form 인증방식이 전달 내부적으로 시큐리티가 설정

실제 동작

  • formLogin

  • 인증예외 발생시 이 엔트리 포인트가 발생시 할당하도록 설정됨.

  • httplogin

  • 예외를 관장하는 곳에 저장되야되기때문에 .

  • 요렇게 넣는다.

  • 최종적으로 넣는곳 ExceptionTranslationFilter

  • 내부에서 2개의 인증 설정 사용시 어떤걸 선택할까?

profile
어제의 나보다 한걸음 더

0개의 댓글