Spring/Security

Spring Security 6 - (1)

DongHo 2024. 9. 18. 23:37

Spring Security Internal Flow

1️⃣ STEP 1: (사용자가 자격 증명 입력)

사용자가 로그인을 위해 자격 증명(예: 사용자 이름과 비밀번호)을 제출합니다.

2️⃣ STEP 2: (Spring Security Filters - Authentication / 스프링 보안 필터 - 인증)

자격 증명이 포함된 요청이 스프링 보안의 필터 체인에 의해 가로채져 인증 프로세스가 시작됩니다.

2️⃣ STEP 3: (Authentication Manager / 인증 관리자)

AuthenticationManager가 인증 프로세스를 관리하며, 올바른 인증 제공자(AuthenticationProvider)로 요청을 전달합니다.

4️⃣ STEP 4: (Authentication Providers / 인증 제공자)

AuthenticationManager는 제공된 자격 증명으로 요청을 인증하는 책임이 있는 하나 이상의 AuthenticationProvider 구현체에게 위임합니다.

5️⃣ STEP 5: (UserDetails Manager/Service)

UserDetailsService가 호출되어 사용자의 세부 정보(예: 역할 및 권한)를 데이터베이스 또는 기타 데이터 소스에서 로드합니다.

6️⃣ STEP 6: (PasswordEncoder / 비밀번호인코더)

PasswordEncoder는 제공된 비밀번호가 사용자에 대해 저장된 비밀번호와 일치하는지 확인하거나 인코딩하는 데 사용됩니다.

7️⃣ STEP 7: (인증 관리자로 돌아감)

AuthenticationProvider 는 인증된 객체를 AuthenticationManager에 반환하여 인증이 성공했음을 나타냅니다.

8️⃣ STEP 8: (스프링 보안 필터로 돌아감)

AuthenticationManager는 사용자가 인증되었음을 나타내어 스프링 보안 필터 체인에 제어를 반환합니다.

9️⃣ STEP 9: (보안 컨텍스트)

인증된 사용자의 세부 정보가 세션의 보안 컨텍스트를 보유하고 있는 SecurityContextHolder에 저장됩니다.

🔟 STEP 10: (사용자)

요청이 대상 리소스(예: 컨트롤러 메서드)로 전달되고 사용자는 애플리케이션의 보안 부분에 접근할 수 있는 권한을 부여받습니다.

 


☑️ 스프링 보안 필터 (Spring Security Filters)

스프링 보안 필터들은 각 요청을 가로채어 인증이 필요한지 확인합니다. 인증이 필요하면 사용자를 로그인 페이지로 이동시키거나 초기 인증 중 저장된 정보를 사용합니다.

☑️ 인증 (Authentication)

UsernamePasswordAuthenticationFilter와 같은 필터는 HTTP 요청에서 사용자 이름/비밀번호를 추출하여 인증 객체를 준비합니다. 인증은 스프링 보안 프레임워크 내에서 인증된 사용자 정보를 저장하는 핵심 표준입니다.

☑️ 인증 관리자 (AuthenticationManager)

필터에서 요청을 받으면, 사용자 정보의 유효성 검사를 사용 가능한 인증 제공자들에게 위임합니다. 앱 내에 여러 제공자가 있을 수 있으므로, 인증 관리자가 모든 인증 제공자를 관리하는 책임이 있습니다.

☑️ 인증 제공자 (AuthenticationProvider)

인증 제공자는 사용자 정보를 인증하기 위한 핵심 로직을 가지고 있습니다.

☑️ UserDetailsManager/UserDetailsService

UserDetailsManager UserDetailsService는 DB/저장 시스템에서 사용자 정보를 검색, 생성, 업데이트, 삭제하는 데 사용이 됩니다.

☑️ PasswordEncoder

비밀번호를 인코딩하고 해싱하는 데 도움이 되는 서비스 인터페이스입니다. 그렇지 않으면 평문 비밀번호로 사용해야 할 수도 있습니다.

☑️ 보안 컨텍스트 (SecurityContext)

요청이 인증되면 인증 정보는 일반적으로 SecurityContextHolder에 의해 관리되는 스레드 로컬 보안 컨텍스트에 저장됩니다. 이는 동일한 사용자로부터의 다가오는 요청을 처리하는 데 사용이 됩니다.

 

 

 


참고자료

https://www.udemy.com/course/spring-security-6-jwt-oauth2-korean

'Spring > Security' 카테고리의 다른 글

Spring Security 6 - (2)  (0) 2024.09.18