spring Security는 초기화 진행이 되면 기본적으로 2개 인증방식을 설정한다.
FormLogin / HttpBasic
어떤 클래스에서 AuthenticationEntryPoint설정을 관장할까?
인증 예외 발생시 AuthenticationEntryPoint클래스를 통해서
인증 예외 이후에 어떻게 할것인가? 설정하게 만드는게 클래스AuthenticationEntryPoint
AuthenticationEntryPoint 설정을 다하게 됨.
인증 예외 발생시?
ExceptionHandlingConfigurer통해서 AuthenticationEntryPoint 객체를 만들어서 전달함
최종적으로 예외발생시 AuthenticationEntryPoint 구현체가
LoginUrlAuthentiationEntry 임
첫번째 LoginUrlAuthentiationEntry 를 전달받아서
ExceptionHandlingConfigurer가 어디에 저장?
defaultEntryPointMappings Map객체에 저장됨
하나 이상의 AuthenticationEntryPoint 저장됨 (초기화때 이루어짐)
HttpBasicConfigurer 예외 발생시?
구현 체를 만들어서 ExceptionHandlingConfigurer 설정안에 있는
defaultEntryPointMappings 추가함
그 구현체는 BasicAuthenticationEntryPoint
기본적으로는 2개가 일단. 생긴다.
두개 중 어떤 인증방식을 선택하더라도 처리는 되게 설정이 되있다.
내가 만약 custom한 EntyPoint를 만든다면 ?
기존 디폴트로 설정된 건 무시하고 내가 설정한 방식으로 동작
시큐리티랑 비슷?
AuthenticationEntryPoint 실제 어디에 저장되서 실행될까?
여기에 저장 되서 실행됨
최종 1개 도착
FormLogin / HttpBasic 설정안하면?
기본적으로 Http403ForbiddenEntryPoint 실행
이게 나왔다? 인증설정을 안했다는 것이다.
두개 중 한개만 설정되있다? 하나만 그냥 ExceptionTranslationFilter 에전달
두개 다? 두개 중 하나를 내부적인 로직으로 두 개 인증방식중 필요한 인증 방식을 선택해서 넘겨 준다. security가
기본 적으로 2개의 인증 방식 생성
각각의 인증 포인트를 만들어서 넘긴다.
커스텀하개 만들면 커스텀한 설정이 넘어감.
두개 중 하나만 설정하면 설정한 값만 넘어감
두개 다 설정하면 내부적으로 선택해서 전달해서 실행함
상태에서 Http 나 formlogin 설정해도 동작안함.
두개 설정하면? Form 인증방식이 전달 내부적으로 시큐리티가 설정
내부에서 2개의 인증 설정 사용시 어떤걸 선택할까?