새로운 섹션에 오신 걸 환영합니다
이번 섹션에서 우리는 어떻게
우리의 맞춤 AuthenticationProviders를 정의할 것인지에 집중할 것입니다
지금 우리는
Spring Security의 기본 AuthenticationProviders를 활용하는데
그것은 DaoAuthenticationProvider입니다
언제든 우리가 기본 AuthenticationProviders를 사용할 때
개발자로서 우리의 할 일은 오직
데이터베이스 같은 저장 시스템에서 사용자 세부정보를 가져오고
암호를 구성하고
우리가 사용하고 싶은 코드를 구성하는 것입니다
따라서 이 두 가지 변화와
사용자 세부정보를 우리가
DaoAuthenticationProvider에 집어넣게 된다면
제 DaoAuthenticationProvider는
엔드 유저를 인증하는 일을 할 것입니다
비밀번호를 비교하고
그리고 비밀번호 비교와 더불어
다른 것들도 확인할 것인데
계정이 로그인되어 있는지 만료되었는지
혹은 신임장이 만료 되었는지 확인합니다
이 DaoAuthenticationProvider는 우리가 엔드 유저 인증 도중에 고려하고 싶은
대부분의 시나리오를 제공합니다
그리고 DaoAuthenticationProvider 안에 있는
기본 구현 논리는
많은 작업들에 있어 충분하고도 남습니다
하지만 실제 세계에서는 엔드 유저를 인증할 때
우리는 다소 복잡한 요구사항들을 마주할 것입니다
그래서 이런 상황들에서는
사용자 세부사항을 저장 시스템에서 가져오는 것과 별개로
우리는 우리만의 인증 논리를 실행하고 싶습니다
어쩌면 제 클라이언트가 특별한 요구사항들을 가질 수도 있습니다
예를 들어 엔드 유저들 중
18세 이상의 나이를 가진 사용자들만 시스템에 접근을 허용하거나
허용 국가 목록에 있는
엔드 유저들의 접속만을 허용하는
요구 사항이 있을 수도 있습니다
그래서 맞춤 요구 사항은 무엇이든지 될 수 있습니다
여러분이 생각할 수 있는 몇 개의 상황들이 있겠지만
제가 강조해드리고 싶은 지점은
여러분만의 맞춤 인증 논리를
가지고 싶을 때마다
여러분만의 AuthenticationProviders를
무조건 작성해야 한다는 것입니다
그리고 들여다 보면
여러분의 인증 논리를 전부 여러분이 작성해야 합니다
그것이 이번 섹션에서
우리만의 맞춤 AuthenticationProviders를 정의하는
상황을 다뤄보는 이유입니다
제가 이전에 말했듯
어떤 작업 내에서도 여러 개의 AuthenticationProviders들이
있을 수 있습니다
여기서 여러분은 도대체 어떤 상황에서 여러 개의 AuthenticationProviders를
사용하는지 의문을 가지실 수 있을 것입니다
이 슬라이드를 보시면
어떤 클라이언트는 다양한 접근을 통해 최종 사용자를
인증하고 싶다는 요구 사항을 가질 수도 있습니다
그가 고려하고 싶은 첫 번째 접근은
유저 이름과 비밀번호를 통한 접근입니다
두 번째 요구 사항은 아마도
생산 환경을 위한
굉장히 민감한 적용일지도 모릅니다
그는 OAuth 2.0 인증을 사용하고 싶어하는데
이는 발전된 인증과
인증 프레임워크입니다
그리고 제 고객에게 있을 만한
세 번째 인증 요구 사항은
적은 경우들에 대해 그가 OTP 또한 인증의 일부로 사용하고 싶다는 것입니다
그래서 여기를 보시면 세 가지 다른 요구 사항들이
다른 상황들에 기반한 같은 적용을 위해 있습니다
이런 상황들에서는
우리는 당연히 여러 개의 AuthenticationProviders를 작성할 수 있습니다
오른쪽에 보실 수 있듯
첫번째로 제 Spring Security 필터들이
유저 입장 신임증을 인증 객체로
변환하는 등의 일을 하고
ProviderManager가 들어와서
우리가 앱 내에서 보유한
모든 AuthenticationProviders들을 불러오는 일을 하고
제 인증이
성공하거나 실패해도
그때 쯤 제 ProviderManager가
모든 AuthenticationProviders를 불러왔을 것입니다
현실에서 혹은 실제 작업에서는
여러분만의 맞춤 인증 논리를
작성해야 하는 다양한 상황들이 있을 수 있기 때문에
여러분만의 AuthenticationProviders를
어떻게 정의할 것인지
여러분만의 AuthenticationProviders의 도움으로
인증을 확실히 실행할 수 있게 하는 방법을 이해하는 것은 언제나 좋습니다
그것이 우리가 이 부분에서
AuthenticationProviders에 초점을 맞추는 이유입니다
여러분이 이 부분의 주제를 이해하셨고
우리가 AuthenticationProviders를
보수해야 하는 상황들이
있을 수 있다는 것에 동의하셨길 바랍니다
그것과 더불어 다음 강의에서
AuthenticationProviders 인터페이스의 세부사항에 대해 배우고
그 내용을 바탕으로
우리만의 AuthenticationProviders를
구현하기 시작해 봅시다
감사드리며 다음 강의에서 뵙겠습니다
수고하셨습니다