인프런/스프링 시큐리티 완전 정복 [6.x 개정판]19 7) 인증 아키텍처 - Authentication , SecurityContext / SecurityContextHolder 인증 - Authentication • 인증은 특정 자원에 접근하려는 사람의 신원을 확인하는 방법을 의미한다 • 사용자 인증의 일반적인 방법은 사용자 이름과 비밀번호를 입력하게 하는 것으로서인증이 수행되면 신원을 알고 권한 부여를 할 수 있다 • Authentication 은 사용자의 인증 정보를 저장하는 토큰 개념의 객체로 활용되며인증 이후 SecurityContext 에 저장되어 전역적으로 참조가 가능하다 • getPrincipal() 인증 주체를 의미하며 인증 요청의 경우 사용자 이름을, 인증 후 에는 UserDetails 타입의 객체가 될 수 있다• getCredentials() - 인증 주체가 올바른 것을 증명하는 자격 증명으로서 대개 비밀번호를 의미한다• getAuthorities().. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 14. 6) 인증 프로세스 - logout() ,RequestCache / SavedRequest 로그아웃• 스프링 시큐리티는 기본적으로 DefaultLogoutPageGeneratingFilter를 통해로그아웃 페이지를 제공하며 “ GET / logout ” URL 로 접근이 가능하다. • 로그아웃 실행은 기본적으로 “ POST / logout “ 으로만 가능하나CSRF 기능을 비활성화 할 경우 혹은 RequestMatcher 를 사용할 경우 GET, PUT, DELETE 모두 가능하다 • 로그아웃 필터를 거치지 않고 스프링 MVC 에서 커스텀 하게 구현할 수 있으며로그인 페이지가 커스텀하게 생성될 경우 로그아웃 기능도 커스텀하게 구현해야 한다 logout() API @EnableWebSecurity@Configurationpublic class SecurityConfig { @Bean .. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 11. 5) 인증프로세스 - BasicAuthenticationFilter , rememberMe() , RememberMeAuthenticationFilter, anonymous() BasicAuthenticationFilter • 이 필터는 기본 인증 서비스를 제공하는 데 사용된다 • BasicAuthenticationConverter 를 사용해서 요청 헤더에 기술된 인증정보의 유효성을 체크하며Base64 인코딩된 username 과 password 를 추출한다[유효성 체크 ==> Authentication이라는 헤더가 있는지, Basic이라는 인증기술이 적혀있는지 확인하는 절차 ] • 인증 이후 세션을 사용하는 경우와 사용하지 않는 경우에 따라 처리되는 흐름에 차이가 있다.세션을 사용하는 경우 매 요청 마다 인증과정을 거치지 않으나세션을 사용하지 않는 경우 매 요청마다 인증과정을 거쳐야 한다[ex) jwt같은] BasicAuthenticationFilter를 통해 유효성 체크를 .. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 10. 4) 인증프로세스 - 폼 인증,폼 인증 필터, HTTP Basic 인증 폼 인증 • HTTP 기반의 폼 로그인 인증 메커니즘을 활성화하는 API 로서사용자 인증을 위한 사용자 정의 로그인 페이지를 쉽게 구현할 수 있다 • 기본적으로 스프링 시큐리티가 제공하는 기본 로그인 페이지를 사용하며사용자 이름과 비밀번호 필드가 포함된 간단한 로그인 양식을 제공한다 • 사용자는 웹 폼을 통해 자격 증명(사용자 이름과 비밀번호)을 제공하고Spring Security는 HttpServletRequest에서 이 값을 읽어 온다 클라이언트가 아직 접근 인증을 받지 못했다면 접근 예외가 발생하고 예외 처리 필터로 인해 인증이 시작되면서 로그인 페이지로 리다이렉트 된다. formLogin() API[메소드를 API라고 칭하는 이유는 이 메서드들이 Spring Security의 내부 기능에 접.. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 8. 3) 초기화 과정이해 - DelegatingFilterProxy / FilterChainProxy , 사용자 정의 보안 설정하기 Filter• 서블릿 필터는 웹 애플리케이션에서 클라이언트의 요청과 서버의 응답을 가공하거나 검사하는데 사용되는 구성 요소이다 [ 클라이언트의 요청 -> ServletRequest [ HttpServletRequest ] , 서버의 응답 -> ServletResponse [ HttpServletResponse] ] • 서블릿 필터는 클라이언트의 요청이 서블릿에 도달하기 전이나 서블릿이 응답을 클라이언트에게 보내기 전에 특정 작업을 수행할 수 있다 • 서블릿 필터는 서블릿 컨테이너(WAS)에서 생성되고 실행되고 종료된다 DelegatingFilterProxy • DelegatingFilterProxy는 스프링에서 사용되는 특별한 서블릿 필터로,서블릿 컨테이너와 스프링 애플리케이션 컨텍스트 간의 연결고.. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 5. 2) 초기화 과정이해 - WebSecurity / HttpSecurity HttpSecurityHttpSecurityConfiguration에서 HttpSecurity를 생성하고 초기화를 진행한다 HttpSecurity는 보안에 필요한 각 설정 클래스와 필터들을 생성하고 최종적으로 SecurityFilterChain 빈 생성 HttpSecurityConfiguration를 통해 HttpSecurity를 수동빈 등록하는데 빈을 생성할때 설정을 진행하며Configurer가 만들어지고 최종적으로 HttpSecurity가 생성되면 Configurer안의 init, configure 메소드를 통해 필터들이 생성되고 등록된다. SecurityFilterChain - SecurityFilterChain는 하나가 아니라 여러개가 생성될 수 있다. public final class .. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 2. 1) 초기화 과정이해 - 프로젝트 설정, Spring Security 기본설정클래스, SecurityBuilder / SecurityConfigurer 프로젝트 설정 -Spring boot 3.3.4 버전- JDK 17 - Gradle dependencies { implementation 'org.springframework.boot:spring-boot-starter-security' }spring security 의존성 추가 Spring Boot Security 자동설정spring security 의존성을 추가하면 관련 라이브러리가 다운로드 되고 그중 자동 설정 클래스가 추가된다. SpringBootWebSecurityConfiguration@Configuration(proxyBeanMethods = false)@ConditionalOnWebApplication(type = Type.SERVLET)class SpringBootW.. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 9. 30. 이전 1 2 다음