사용자는 자격 증명을 로그인 페이지에 입력하여 백엔드 웹 애플리케이션에 요청을 시작한다.
브라우저 모바일 웹 또는 Postman을 통해 클라이언트는 Spring Security 프레인워크로 보호된 이 요청을 전송한다.
1. 들어오는 요청 필터링
요청이 서블릿 컨테이너 또는 톰캣 서버에 도착하면 클래스 경로 설정으로 인해 내장된 Spring Security 필터가 모든 들어오는 요청을 감시한다.
이 필터들은 구성된 경로를 기반으로 요청된 자원이 보호되었는지 여부를 판단한다.
2. 초기 인증 처리
자원이 보호되면 필터는 해당 사용자에게 강제로 인증을 요구할지 여부를 결정한다.
필요한 경우 로그인 페이지가 사용자의 첫 번째 보호 웹 페이지 액세스를 위해 표시된다.
3. 이후의 인증 확인
이후의 시도에서 필터는 사용자가 이미 인증되었는지 확인한다.
결과에 따라 로그인 페이지 강제 여부와 초기 로그인에서 생성된 세션 ID 또는 토큰의 사용이 결정된다.
4. 사용자 자격 증명 추출
필터는 사용자의 요청에서 사용자 이름과 비밀번호를 추출하고 이를 인증 객체로 변환한다.
이 객체는 Spring Security에서 사용자 정보를 저장하기 위한 핵심 표준으로, 주로 사용자 이름과 자격 증명을 포함한다.
5. 인증 관리자
필터는 요청을 인증 관리자로 전달하며, 이 관리자는 실제 인증 로직을 관리한다.
애플리케이션 내에서 어떤 인증 공급자가 있는지 확인하고 해당하는 인증 로직을 정의하는 역할을 한다.
6. 다중 인증 공급자
다양한 인증 공급자가 공존할 수 있으며, 각각이 특정 인증 로직을 처리한다.
이 유연성을 통해 로그인에 대한 사용자 이름-비밀번호 인증 또는 OR 매핑을 활용한 다른 인증을 사용할 수 있다.
7. 사용자 자격 증명 보호
다음은 안전성 문제를 해결하기 위해 암호를 저장할 때 항상 암호화하거나 해싱해야 한다.
Spring Security는 PasswordEncoder 인터페이스와 그 구현을 제공하여 사용자 자격 증명의 유효성을 보장한다.
8. 결과 및 보안 컨텍스트
인증 제공자는 처리가 완료되면 결과를 인증 관리자에게 전달한다.
Spring Security 필터는 생성된 인증 객체를 응용 프로그램 내의 보안 컨텍스트에 저장하려고 시도한다.
이 컨텍스트에는 성공적인 인증에 대한 정보가 포함된다.
9. 보안 컨텍스트
인증이 성공하고 보안 컨텍스트에 필요한 정보가 저장된 경우, 사용자의 다음 로그인 시도에서는 자격 증명을 다시 요구하지 않는다.
보안 컨텍스트는 이러한 원활한 경험을 제공하는 데 중요한 구성 요소로 작용한다.
10. 보호된 자원 액세스
인증 객체가 안전하게 저장된 상태에서 사용자는 보호된 자원에 액세스할 수 있다. 이는 웹 페이지 또는 REST 서비스에 대한 최종 단계를 나타낸다.
이리하여, 스프링 시큐리티의 내부 동작을 이해하려면 용청, 필터 인증 프로세스를 탐색해야 한다. 앞으로의 게시물들은 이를 자세히 하나하나 실습해가며 이해를 도울 것이다.
'Spring > Spring Security' 카테고리의 다른 글
스프링 시큐리티 - SESSION (3) 인가 작업 (0) | 2024.02.07 |
---|---|
스프링 시큐리티 - SESSION (2) 프로젝트 생성 (0) | 2024.02.07 |
스프링 시큐리티 - SESSION (1) 간단 동작 원리 (0) | 2024.02.06 |
Spring Security 의 서블릿과 필터 (0) | 2023.12.29 |
Spring Security 같은 보안 FrameWork를 사용해야 하는 이유 (0) | 2023.12.29 |