[스프링 시큐리티] WebSecurityConfigurerAdapter deprecated 대응
·
Spring
WebSecurityConfigurerAdapter is deprecatedSpring Security 6.0 버전 기준으로 WebSecurityConfigurerAdapter를 완전 사용할 수 없게 됐다.기존 WebSecurityConfigurerAdapter를 상속 후에, configure 메소드를 오버라이딩 하는 방식은 deprecated 됐다. 대신 개발자가 직접 component-based security 설정을 할 수 있도록 변경되었다. 즉 커스텀 할 설정들을 @Bean으로 등록하여 사용한다.HttpSecurity 설정// 변경된 방식 (filterChain을 사용)@Configurationpublic class SecurityConfiguration { @Bean public Se..
[스프링 시큐리티] AuthenticationManager, AuthenticationProvider
·
Spring
※ 이 글은 정수원님의 스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security 강의를 수강하면서 학습한 내용을 정리한 글입니다. 일부 강의 내용을 인용하였으며, 문제가 될 시 인용 부분을 수정 또는 삭제하겠습니다. AuthenticationManager인증 처리하는 filter로부터 인증처리를 지시받는 첫번째 클래스.ID와 Password를 Authentication 인증 객체에 저장하고 이 객체를 AuthenticationManager에게 전달한다. 이 인증에 대해 관리를 하게 된다.AuthenticationManager 인터페이스를 실제로 구현한 것이 ProviderManager. 이 AuthenticationManager 인터페이스를 구현하면 커스텀 ProviderM..
[스프링 시큐리티] 필터(DelegatingFilterProxy, FilterChainProxy)
·
Spring
※ 이 글은 정수원님의 스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security 강의를 수강하면서 학습한 내용을 정리한 글입니다. 일부 강의 내용을 인용하였으며, 문제가 될 시 인용 부분을 수정 또는 삭제하겠습니다. 필터WAS에서 실행된 요청이 오면 이 요청이 서블릿으로 들어오는데, 서블릿에 들어오기 전에 처리를 하는 것이 필터.필터의 흐름HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러필터 체인HTTP 요청 -> WAS -> 필터 1 -> 필터 2 -> 필터 3 -> 서블릿 -> 컨트롤러DelegatingFilterProxy이 필터는 Servlet 스펙에 있는 기술이기 때문에 Servlet 컨테이너에서만 생성되고 실행된다. Spring의 Ioc 컨테이너와는 ..
[스프링 시큐리티] HttpSecurity vs WebSecurity
·
Spring
HttpSecurity vs WebSecuritySpringBuilder는 웹 보안을 구성하는 빌더 클래스로서 웹 보안을 구성하는 빈 객체와 설정 클래스들을 생성하는 역할을 한다.이 빌더의 종류로는 HttpSecurity와 WebSecurity가 있다. 오늘은 이 둘에 대해서 알아보려고 한다.@Configuration@EnableWebSecuritypublic class CustomWebSecurityConfiguration extends WebSecurityConfigurerAdapter { @Override public void configure(WebSecurity web) throws Exception { web.ignoring() .antMatchers("/h..
[Keycloak] 외부 DB(Mysql)로 변경 (Quarkus, 17버전 이후)
·
Keycloak
이제껏 DB를 따로 생성하지 않아도 Realm, Client, User를 생성하고 저장할 수 있었던 이유는, Keycloak내의 내부 DB(h2)를 사용하고 있었기 때문입니다. 하지만 보통 운영 단계에서는 외부 DB를 사용하는 경우가 많으므로 Keycloak 내부 DB에서 외부 DB로 변경해보겠습니다. 설치 DB는 Mysql입니다. 저는 Docker Compose로 설치해보겠습니다. Mysql 5버전 설치 # docker-compose.yml version: "3.8" services: mysql_5: image: mysql:5.7.38 container_name: mysql_5 environment: - MYSQL_DATABASE=keycloak5 - MYSQL_USER=jerry - MYSQL_PAS..
[Keycloak] Realm, Client, User 생성 (Quarkus, 17버전 이후)
·
Keycloak
이번 시간에는 Realm과 Client, 그리고 User에 대해 알아보겠습니다. 위 그림에서 Application은 Client라고도 불립니다. 혼동을 방지하기위해 앞으로 Client라고 부르겠습니다. Realm Realm은 사용자, 인증, 인가, 권한, 그룹이 관리하는 범위입니다. 한 Realm내의 Client들(위 그림에서는 Application입니다.)은 서로 SSO를 공유합니다. 각각의 Realm은 독립적입니다. 처음 Keycloak에 접속하면 Master Realm이 있는데, 이 Realm은 다른 Realm을 관리하는데만 사용합니다. (단지 관리를 하기위한 Realm이고, 다른 Realm이 Master Realm을 상속 받는 것은 아닙니다.) Client Client란 인증, 인가 업무를 Key..