Skip to content

Commit ca95f48

Browse files
author
fishtailfu
committed
support auth
1 parent 844acfd commit ca95f48

File tree

4 files changed

+94
-2
lines changed

4 files changed

+94
-2
lines changed

polaris-agent-plugins/spring-cloud-plugins/spring-cloud-2023-plugin/pom.xml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,16 @@
373373
</exclusion>
374374
</exclusions>
375375
</dependency>
376-
376+
<dependency>
377+
<groupId>com.tencent.cloud</groupId>
378+
<artifactId>spring-cloud-starter-tencent-polaris-auth</artifactId>
379+
<exclusions>
380+
<exclusion>
381+
<artifactId>spring-cloud-starter-tencent-metadata-transfer</artifactId>
382+
<groupId>com.tencent.cloud</groupId>
383+
</exclusion>
384+
</exclusions>
385+
</dependency>
377386
<dependency>
378387
<groupId>com.tencent.cloud</groupId>
379388
<artifactId>spring-cloud-starter-tencent-discovery-adapter-plugin</artifactId>
@@ -429,7 +438,6 @@
429438
</exclusion>
430439
</exclusions>
431440
</dependency>
432-
433441
</dependencies>
434442

435443
<build>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
package cn.polarismesh.agent.plugin.spring.cloud.inject;
2+
3+
import cn.polarismesh.agent.core.common.utils.ClassUtils;
4+
import cn.polarismesh.agent.core.common.utils.ReflectionUtils;
5+
import cn.polarismesh.agent.plugin.spring.cloud.common.BeanInjector;
6+
import cn.polarismesh.agent.plugin.spring.cloud.common.Constant;
7+
import cn.polarismesh.agent.plugin.spring.cloud.common.Utils;
8+
import com.tencent.cloud.polaris.auth.config.PolarisAuthAutoConfiguration;
9+
import com.tencent.cloud.polaris.auth.config.PolarisAuthPropertiesAutoConfiguration;
10+
import com.tencent.cloud.polaris.auth.config.PolarisAuthPropertiesBootstrapConfiguration;
11+
import java.lang.reflect.Constructor;
12+
import java.lang.reflect.Method;
13+
import java.util.concurrent.atomic.AtomicBoolean;
14+
import org.slf4j.Logger;
15+
import org.slf4j.LoggerFactory;
16+
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
17+
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
18+
import org.springframework.core.env.Environment;
19+
20+
public class AuthBeanInjector implements BeanInjector {
21+
22+
private static final Logger LOGGER = LoggerFactory.getLogger(AuthBeanInjector.class);
23+
24+
private final AtomicBoolean bootstrapLoaded = new AtomicBoolean(false);
25+
26+
@Override
27+
public String getModule() {
28+
return "spring-cloud-starter-tencent-polaris-auth";
29+
}
30+
31+
@Override
32+
public void onBootstrapStartup(Object configurationParser, Constructor<?> configClassCreator,
33+
Method processConfigurationClass, BeanDefinitionRegistry registry, Environment environment) {
34+
if (!(Utils.checkPolarisEnabled(environment) && Utils.checkKeyEnabled(environment,
35+
"spring.cloud.polaris.auth.enabled"))) {
36+
LOGGER.warn(
37+
"[PolarisJavaAgent] polaris auth not enabled, skip inject bootstrap bean definitions for module {}",
38+
getModule());
39+
return;
40+
}
41+
bootstrapLoaded.set(true);
42+
Object polarisAuthPropertiesBootstrapConfiguration = ReflectionUtils.invokeConstructor(configClassCreator,
43+
PolarisAuthPropertiesBootstrapConfiguration.class, "polarisAuthPropertiesBootstrapConfiguration");
44+
ReflectionUtils.invokeMethod(processConfigurationClass, configurationParser,
45+
polarisAuthPropertiesBootstrapConfiguration, Constant.DEFAULT_EXCLUSION_FILTER);
46+
registry.registerBeanDefinition("polarisAuthPropertiesBootstrapConfiguration",
47+
BeanDefinitionBuilder.genericBeanDefinition(PolarisAuthPropertiesBootstrapConfiguration.class)
48+
.getBeanDefinition());
49+
LOGGER.info("[PolarisJavaAgent] success to inject bootstrap bean definitions for module {}", getModule());
50+
}
51+
52+
@Override
53+
public void onApplicationStartup(Object configurationParser, Constructor<?> configClassCreator,
54+
Method processConfigurationClass, BeanDefinitionRegistry registry, Environment environment) {
55+
if (!(Utils.checkPolarisEnabled(environment) && Utils.checkKeyEnabled(environment,
56+
"spring.cloud.polaris.auth.enabled"))) {
57+
LOGGER.warn(
58+
"[PolarisJavaAgent] polaris not enabled, skip inject application bean definitions for module {}",
59+
getModule());
60+
return;
61+
}
62+
if (!bootstrapLoaded.get()) {
63+
onBootstrapStartup(configurationParser, configClassCreator, processConfigurationClass, registry,
64+
environment);
65+
}
66+
Object polarisAuthAutoConfiguration = ReflectionUtils.invokeConstructor(configClassCreator,
67+
PolarisAuthAutoConfiguration.class, "polarisAuthAutoConfiguration");
68+
ReflectionUtils.invokeMethod(processConfigurationClass, configurationParser,
69+
polarisAuthAutoConfiguration, Constant.DEFAULT_EXCLUSION_FILTER);
70+
registry.registerBeanDefinition("polarisAuthAutoConfiguration",
71+
BeanDefinitionBuilder.genericBeanDefinition(PolarisAuthAutoConfiguration.class)
72+
.getBeanDefinition());
73+
Object polarisAuthPropertiesAutoConfiguration = ReflectionUtils.invokeConstructor(configClassCreator,
74+
PolarisAuthPropertiesAutoConfiguration.class, "polarisAuthPropertiesAutoConfiguration");
75+
ReflectionUtils.invokeMethod(processConfigurationClass, configurationParser,
76+
polarisAuthPropertiesAutoConfiguration, Constant.DEFAULT_EXCLUSION_FILTER);
77+
registry.registerBeanDefinition("polarisAuthPropertiesAutoConfiguration",
78+
BeanDefinitionBuilder.genericBeanDefinition(PolarisAuthPropertiesAutoConfiguration.class)
79+
.getBeanDefinition());
80+
LOGGER.info("[PolarisJavaAgent] success to inject application bean definitions for module {}", getModule());
81+
}
82+
}

polaris-agent-plugins/spring-cloud-plugins/spring-cloud-2023-plugin/src/main/java/cn/polarismesh/agent/plugin/spring/cloud/interceptor/ConfigurationParserInterceptor.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ public ConfigurationParserInterceptor() {
5656
beanInjectors.add(new RouterBeanInjector());
5757
beanInjectors.add(new CircuitBreakerBeanInjector());
5858
beanInjectors.add(new RateLimitBeanInjector());
59+
beanInjectors.add(new AuthBeanInjector());
5960
}
6061

6162

polaris-agent-plugins/spring-cloud-plugins/spring-cloud-2023-plugin/src/main/java/cn/polarismesh/agent/plugin/spring/cloud/interceptor/SpringFactoriesLoaderInterceptor.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public SpringFactoriesLoaderInterceptor() {
4545
beanInjectors.add(new RouterBeanInjector());
4646
beanInjectors.add(new CircuitBreakerBeanInjector());
4747
beanInjectors.add(new RateLimitBeanInjector());
48+
beanInjectors.add(new AuthBeanInjector());
4849
}
4950

5051
@SuppressWarnings("unchecked")

0 commit comments

Comments
 (0)