SpringSecurity 4

[SPRING SECURITY] 시큐리티 파헤치기 (4) - AUTHENTICATION

DaoAuthenticationProvider 로그인시 username과 password를 제출하면 UsernamePasswordAuthenticationFilter가 Authentication 타입의 UsernamePasswordAuthenticationToken을 만들어 AuthenticationManager에게 전달되고, DaoAuthenticationProvider에게 전달된다. DaoAuthenticationProvider는 token의 username을 이용해 UserDetailsService에게 Userdetails을 요청받고, PasswordEncoder를 통해 UserDetails의 password와 token의 password를 비교한다. 인증에 성공하면 UsernamePasswordA..

JAVA(SPRINGBOOT) 2023.03.23

[SPRING SECURITY] 시큐리티 파헤치기 (3) - AUTHENTICATION

Servlet Authentication Archittecture SecurityContextHolder 누가 인증되었는지에 대한 정보가 저장되는 공간 SpringSecurity 인증의 핵심 SecurityContext를 포함 SpringSecurity는 SecurityContextHolder가 어떻게 채워지는지 신경쓰지않음 값이 저장되어있으면 현재 인증된 User로 사용된다. // Setting SercurityContextHolder SecurityContext context = SecurityContextHolder.createEmptyContext(); Authentication authentication = new TestingAuthenticationToken("username", "passw..

JAVA(SPRINGBOOT) 2023.03.22

[SPRING SECURITY] 시큐리티 파헤치기 (2) - ARCHITECTURE

Spring 공식 문서를 정리할 것이며, 나름의 이해와 생각을 함께 정리할 예정이다. Spring Security? 인증, 인가, 외부 공격으로부터의 보호 기능을 제공하는 프레임워크 자바 8 이상의 Runtime 환경 필요 스프링 시큐리티는 Servlet Container와 통합되기 때문에 Servlet Container가 동작하는 어떤 어플리케이션에서도 동작한다. 시큐리티를 위해 스프링을 사용할 필요는 없다. Sring Boot + Spring Security Spring Boot Auto Configuration 스프링 시큐리티 기본 설정을 활성화하여, springSecurityFilterChain이라는 이름을 가진 servlet Filter을 빈으로 생성 이는 어플리케이션에서 보안에 관련된 모든 것..

카테고리 없음 2023.03.17

[SPRING SECURITY] 시큐리티 파헤치기 (1)

이제껏 로그인/로그아웃은 스프링 시큐리티(Spring Security)를 이용해 구현해왔다. 어플리케이션의 보안은 가장 중요한 부분 중 하나일텐데 얇은(?) 이해를 가지고 기능 구현만 해오고 원리를 정확히 파악하지 않았다. JWT나 OAuth 로그인 기능을 추가할 땐 매번 버벅이며 시간을 허비했다. 그래서 나는 시큐리티를 내가 가능한 범위에서 최대한 파고들어볼 생각이다. 먼저, 내가 지금껏 이해한 로그인 과정은 다음과 같다. 1. client로 부터 username과 password 정보를 받는다. 2. UserDetailsService의 loadUserByUsername을 통해 DB에서 username을 가진 객체를 찾고 존재한다면 UserDetails객체를 생성해 반환한다. 3. 요청 받은 passw..

JAVA(SPRINGBOOT) 2023.03.16