Spring Security
이슈
- 스프링부트 3.0 부터 스프링 시큐리티 6.0.0 이상의 버전 적용
- 해당 Security 버전에서는 antMatchers, WebSecurityConfigurerAdapter 등이 deprecated
SpringSecurity vs Keycloak
- Spring Security
- form action URL이 SecurityConfig의 .loginProcessingUrl("/login/loginProc.do") 과 같으면
- UserDetailsService 의 loadUserByUsername() 함수에서 인증처리를 수행한다.
- 이 메소드에서 DB를 읽던, Keycloak 의 인증을 요청하던 처리하면 된다.
- 인증이 성공하면 SecurityHolderContext에 인증정보가 생성되고
- SecurityConfig 설정에 따라 이동된다.
Keycloak
기존 UserDetailsService 방식과 Keycloak OAuth2 방식 비교
구분 UserDetailsService 사용 시 Keycloak OAuth2 사용 시
인증 객체 UsernamePasswordAuthenticationToken OAuth2AuthenticationToken 또는 JwtAuthenticationToken
사용자 정보 UserDetails (User 객체) OidcUser (OAuth2User 또는 Jwt)
보안 컨텍스트 SecurityContextHolder에 Authentication 저장 SecurityContextHolder에 OAuth2AuthenticationToken 저장
권한 정보 GrantedAuthority에 역할 저장 Keycloak에서 제공하는 roles 값을 매핑