refactor: BatchServerConfig Keycloak/OAuth2 코드 제거, 단순 permitAll 설정으로 교체
This commit is contained in:
@@ -1,56 +1,15 @@
|
|||||||
package com.wb.domainserver.security.config;
|
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.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
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.builders.HttpSecurity;
|
||||||
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
||||||
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
|
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.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
|
@EnableWebSecurity
|
||||||
@Configuration
|
@Configuration
|
||||||
@EnableMethodSecurity
|
|
||||||
public class BatchServerConfig {
|
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
|
@Bean
|
||||||
SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
|
SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
|
||||||
@@ -58,53 +17,7 @@ public class BatchServerConfig {
|
|||||||
.csrf(AbstractHttpConfigurer::disable)
|
.csrf(AbstractHttpConfigurer::disable)
|
||||||
.authorizeHttpRequests(authorize -> authorize
|
.authorizeHttpRequests(authorize -> authorize
|
||||||
.anyRequest().permitAll()
|
.anyRequest().permitAll()
|
||||||
)
|
|
||||||
.oauth2ResourceServer(oauth2 -> oauth2
|
|
||||||
.jwt(jwt -> jwt
|
|
||||||
.decoder(jwtDecoder())
|
|
||||||
.jwtAuthenticationConverter(new MemberJwtAuthenticationConverter())
|
|
||||||
)
|
|
||||||
.bearerTokenResolver(this::customBearerTokenResolver)
|
|
||||||
|
|
||||||
)
|
|
||||||
.exceptionHandling(exceptions -> exceptions
|
|
||||||
.authenticationEntryPoint(authenticationEntryPoint)
|
|
||||||
);
|
);
|
||||||
|
|
||||||
return http.build();
|
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();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user