인프런/스프링 시큐리티 완전 정복 [6.x 개정판]19 19) 인가 프로세스 - 요청 기반 권한 부여HttpSecurity.authorizeHttpRequests() 요청 기반 권한 부여 - HttpSecurity.authorizeHttpRequests() Spring Security는 요청 기반 권한 부여(Request Based Authorization)와메소드 기반 권한 부여(Method Based Authorization )를 통해 자원에 대한 심층적인 방어를 제공한다 요청 기반 권한 부여는 클라이언트의 요청 즉 HttpServletRequest에 대한 권한 부여를 모델링 하는 것이며이를 위해 HttpSecurity 인스턴스를 사용하여 권한 규칙을 선언 할 수 있다 @BeanSecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws Exception { http.authorizeH.. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 11. 1. 18) 악용보호 - SameSite SameSite SameSite는 최신 방식의 CSRF 공격 방어 방법 중 하나로서 서버가 쿠키를 설정할 때 SameSite 속성을 지정하여 크로스 사이트 간 쿠키 전송에 대한 제어를 핸들링 할 수 있다 Spring Security는 세션 쿠키의 생성을 직접 제어하지 않기 때문에 SameSite 속성에 대한 지원을 제공하지 않지만 Spring Session 은 SameSite 속성을 지원한다 더보기크로스 사이트(Cross-site)란 웹 애플리케이션에서 서로 다른 출처(도메인) 간의 상호작용을 설명하는 개념입니다. 이 용어는 주로 웹 보안과 관련이 있으며, 가장 일반적으로 크로스 사이트 스크립팅(Cross-Site Scripting, XSS)과 크로스 사이트 요청 위조(Cross-Site Reques.. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 29. 17) 악용보호 - CSRF(Cross Site Request Forgery, 사이트 간 요청 위조) CSRF(Cross Site Request Forgery, 사이트 간 요청 위조) • 웹 애플리케이션의 보안 취약점으로 공격자가 사용자로 하여금 이미 인증된 다른 사이트에 대해 원치 않는 작업을 수행하게 만드는 기법을 말한다 • 이 공격은 사용자의 브라우저가 자동으로 보낼 수 있는 인증 정보, 예를 들어 쿠키나 기본 인증 세션을 이용하여 사용자가 의도하지 않은 요청을 서버로 전송하게 만든다 • 이는 사용자가 로그인한 상태에서 악의적인 웹사이트를 방문하거나 이메일 등을 통해 악의적인 링크를 클릭할 때 발생할 수 있다 CSRF 진행 순서 CSRF 기능 활성화@BeanSecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws E.. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 28. 16) 악용보호 - CORS CORS(Cross Origin Resource Sharing, 교차 출처 리소스 공유) • 웹에서는 보안을 위해 기본적으로 한 웹 페이지(출처 A)에서 다른 웹 페이지(출처 B)의 데이터를 직접 불러오는 것을 제한하는데 이를 '동일 출처 정책(Same-Origin Policy)' 이라고 한다 • 만약 다른 출처의 리소스를 안전하게 사용하고자 할 경우 CORS 가 등장하며 CORS는 특별한 HTTP 헤더를 통해 한 웹 페이지가 다른 출처의 리소스에 접근할 수 있도록 '허가'를 구하는 방법이라 할 수 있다. 즉, 웹 애플리케이션이 다른 출처의 데이터를 사용하고자 할 때, 브라우저가 그 요청을 대신해서 해당 데이터를 사용해도 되는지 다른 출처에게 물어보는 것이라 할 수 있다 • 출처를 비교하는 로직은 .. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 25. 15) 예외처리 - exceptionHandling(), ExceptionTranslationFilter exceptionHandling() • 예외 처리는 필터 체인 내에서 발생하는 예외를 의미하며크게 인증예외(AuthenticationException) 와 인가예외(AccessDeniedException)로 나눌 수 있다 • 예외를 처리하는 필터로서 ExceptionTranslationFilter 가 사용 되며 사용자의 인증 및 인가 상태에 따라로그인 재시도, 401, 403 코드 등으로 응답할 수 있다 예외 처리 유형 AuthenticationException [ 인증 예외 ] 해당 예외가 발생하면 ExceptionTranslationFilter가 진행하는 과정 1. SecurityContext에서 인증 정보 삭제 기존의 Authentication 이 더 이상 유효하지 않다고 판단하고 Authe.. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 24. 14) 세션관리 - SessionManagementFilter / ConcurrentSessionFilter SessionManagementFilter • 요청이 시작된 이후 사용자가 인증되었는지 감지하고, 인증된 경우에는 세션 고정 보호 메커니즘을 활성화하거나동시 다중 로그인을 확인하는 등 세션 관련 활동을 수행하기 위해 설정 된 세션 인증 전략(SessionAuthenticationStrategy)을 호출하는 필터 클래스이다 • 스프링 시큐리티 6 이상에서는 SessionManagementFilter 가 기본적으로 설정 되지 않으며세션관리 API 를 설정을 통해 생성할 수 있다 세션 구성 요소 ConcurrentSessionFilter [동시 세션 제어] • 각 요청에 대해 SessionRegistry에서 SessionInformation 을 검색하고 세션이 만료로 표시되었는지 확인하고 만료로 표.. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 23. 13)세션관리 - 동시 세션 제어 , 세션 고정 보호, 세션 생성 정책 세션관리 - 동시 세션 제어 • 동시 세션 제어는 사용자가 동시에 여러 세션을 생성하는 것을 관리하는 전략이다 • 이 전략은 사용자의 인증 후에 활성화된 세션의 수가 설정된 maximumSessions 값과 비교하여 제어 여부를 결정한다 하나의 계정으로 인해 세션이 여러개 생기는것 == 동시적 세션[각 클라이언트가 동일한 계정으로 인증을 하게되면 각각 다른 세션이 서버에 생성되고각각 다른 세션ID가 클라이언트에게 반환된다.] pc,휴대폰,패드 각각 로그인을 하게된다면 3개의 클라이언트가 각각 세션을 가지게 된다. 최대 세션이 만약 1개라면-> pc에서 로그인하고 난뒤 휴대폰에서 로그인하면 pc에 인증한게 무효화되거나 휴대폰에서 로그인이 안된다. 동시 세션 제어 2 가지 유형 1. 사용자 세션 강.. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 22. 12)스프링 MVC 로그인 구현 스프링 MVC 로그인 구현 • 스프링 시큐리티 필터에 의존하는 대신 수동으로 사용자를 인증하는 경우스프링 MVC 컨트롤러 엔드포인트를 사용할 수 있다 • 요청 간에 인증을 저장하고 싶다면 HttpSessionSecurityContextRepository 를 사용하여 인증 상태를 저장 할 수있다 @RestController@RequiredArgsConstructorpublic class LoginController { private final AuthenticationManager authenticationManager; private final HttpSessionSecurityContextRepository securityContextRepository = new HttpSession.. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 21. 11) 인증 상태 영속성 - SecurityContextRepository & SecurityContextHolderFilter SecurityContextRepository • 스프링 시큐리티에서 사용자가 인증을 한 이후 요청에 대해 계속 사용자의 인증을 유지하기 위해 사용되는 클래스이다 • 인증 상태의 영속 메커니즘은 사용자가 인증을 하게 되면 해당 사용자의 인증 정보와 권한이 SecurityContext에 저장되고 HttpSession 을 통해 요청 간 영속이 이루어 지는 방식이다 구조 SecurityContextRepository 구현체 3가지 • HttpSessionSecurityContextRepository 요청 간에 HttpSession 에 보안 컨텍스트를 저장한다. 후속 요청 시 컨텍스트 영속성을 유지한다 • RequestAttributeSecurityContextRepository ServletRequest.. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 18. 10) 사용자 상세 서비스 - UserDetailsService , 사용자 상세 -UserDetails UserDetailsService UserDetailsService의 주요 기능은 사용자와 관련된 상세 데이터를 로드하는 것이며사용자의 신원, 권한, 자격 증명 등과 같은 정보를 포함할 수 있다 이 인터페이를 사용하는 클래스는 주로 AuthenticationProvider 이며사용자가 시스템에 존재하는지 여부와 사용자 데이터를 검색하고 인증 과정을 수행한다 사용자의 이름을 통해 사용자 데이터를 검색하고, 해당 데이터를 UserDetails 객체로 반환한다 UserDetailsService 흐름도 UserDetailsService 사용 방법 위의 userDetailService() 메소드를 사용한것처럼 직접 POJO객체를 등록해도 되지만 아래처럼 @Bean을 이용해서 빈등록을 하는것이 사용.. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 17. 9) 인증 제공자 - AuthenticationProvider AuthenticationProvider • 사용자의 자격 증명을 확인하고 인증 과정을 관리하는 클래스로서 사용자가 시스템에 액세스하기 위해제공한 정보(예: 아이디와 비밀번호)가 유효한지 검증하는 과정을 포함한다 • 다양한 유형의 인증 메커니즘을 지원할 수 있는데,예를 들어 표준 사용자 이름과 비밀번호를 기반으로 한 인증, 토큰 기반 인증, 지문 인식 등을 처리할 수 있다. • 성공적인 인증 후에는 Authentication 객체를 반환하며 이 객체에는 사용자의 신원 정보와 인증된 자격 증명을 포함한다 • 인증 과정 중에 문제가 발생한 경우 AuthenticationException 과 같은 예외를 발생시켜 문제를 알리는 역할을 한다 AuthenticationProvider 흐름도 Authent.. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 16. 8) 인증 관리자 - AuthenticationManager AuthenticationManager • 인증 필터로부터 Authentication 객체를 전달 받아 인증을 시도하며 인증에 성공할 경우사용자 정보, 권한 등을 포함한 완전히 채워진 Authentication 객체를 반환한다 • AuthenticationManager 는 여러 AuthenticationProvider 들을 관리하며 AuthenticationProvider 목록을 순차적으로 순회하며 인증 요청을 처리한다 • AuthenticationProvider 목록 중에서 인증 처리 요건에 맞는 적절한 AuthenticationProvider 를 찾아 인증처리를 위임한다 • AuthenticationManagerBuilder 에 의해 객체가 생성되며 주로 사용하는 구현체로 ProviderManager.. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 15. 이전 1 2 다음