refactor: BatchServerConfig Keycloak/OAuth2 코드 제거, 단순 permitAll 설정으로 교체

This commit is contained in:
이주일
2026-05-23 10:10:29 +09:00
parent d7cc157171
commit 34acf68408

View File

@@ -1,56 +1,15 @@
package com.wb.domainserver.security.config;
import com.nimbusds.jwt.JWT;
import com.nimbusds.jwt.JWTParser;
import com.wb.domainserver.security.authentication.CustomAuthenticationEntryPoint;
import com.wb.domainserver.security.authentication.MemberJwtAuthenticationConverter;
import com.wb.domainserver.security.authorization.WnbtAuthorizationManager;
import jakarta.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.aop.Advisor;
import org.springframework.aop.support.JdkRegexpMethodPointcut;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Role;
import org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor;
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.oauth2.jwt.JwtDecoder;
import org.springframework.security.oauth2.jwt.JwtDecoders;
import org.springframework.security.oauth2.jwt.NimbusJwtDecoder;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
import org.springframework.util.StringUtils;
import java.text.ParseException;
import static org.springframework.beans.factory.config.BeanDefinition.ROLE_INFRASTRUCTURE;
@EnableWebSecurity
@Configuration
@EnableMethodSecurity
public class BatchServerConfig {
private static final Logger logger = LoggerFactory.getLogger(BatchServerConfig.class);
@Value("${spring.security.oauth2.resourceserver.jwt.issuer-uri}")
String issuerUri;
@Autowired
private CustomAuthenticationEntryPoint authenticationEntryPoint;
@Bean
@Role(ROLE_INFRASTRUCTURE)
public Advisor authorizationManagerBeforeMethodInterception(WnbtAuthorizationManager<?> authorizationManager) {
JdkRegexpMethodPointcut pattern = new JdkRegexpMethodPointcut();
pattern.setPattern("com.wb.domainserver.*.controller.*");
return new AuthorizationManagerBeforeMethodInterceptor(pattern, authorizationManager);
}
@Bean
SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
@@ -58,53 +17,7 @@ public class BatchServerConfig {
.csrf(AbstractHttpConfigurer::disable)
.authorizeHttpRequests(authorize -> authorize
.anyRequest().permitAll()
)
.oauth2ResourceServer(oauth2 -> oauth2
.jwt(jwt -> jwt
.decoder(jwtDecoder())
.jwtAuthenticationConverter(new MemberJwtAuthenticationConverter())
)
.bearerTokenResolver(this::customBearerTokenResolver)
)
.exceptionHandling(exceptions -> exceptions
.authenticationEntryPoint(authenticationEntryPoint)
);
return http.build();
}
private String customBearerTokenResolver(HttpServletRequest request) {
String authorization = request.getHeader("Authorization");
if (StringUtils.hasText(authorization) && authorization.startsWith("Bearer ")) {
return authorization.substring(7);
}
return null;
}
@Bean
public JwtDecoder jwtDecoder() {
return token -> {
String issuerUri = determineIssuerUri();
logger.debug("Determined issuerUri: {}", issuerUri);
JWT jwt = null;
try {
jwt = JWTParser.parse(token);
logger.debug("Token issuer: {}", jwt.getJWTClaimsSet().getIssuer());
} catch (ParseException e) {
throw new RuntimeException(e);
}
NimbusJwtDecoder jwtDecoder = JwtDecoders.fromOidcIssuerLocation(issuerUri);
return jwtDecoder.decode(token);
};
}
private String determineIssuerUri() {
return String.format(issuerUri);
}
@Bean
public BCryptPasswordEncoder bCryptPasswordEncoder() {
return new BCryptPasswordEncoder();
}
}