Skip to content

Commit bbf26d5

Browse files
committed
ensure compile normally if not import Spring-Authorization-Server
1 parent ec0dbc0 commit bbf26d5

File tree

1 file changed

+61
-18
lines changed

1 file changed

+61
-18
lines changed

dubbo-plugin/dubbo-spring-security/src/main/java/org/apache/dubbo/spring/security/oauth2/OAuth2SecurityModule.java

Lines changed: 61 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,12 @@
1616
*/
1717
package org.apache.dubbo.spring.security.oauth2;
1818

19+
import org.apache.dubbo.common.utils.ClassUtils;
20+
1921
import java.util.ArrayList;
2022
import java.util.Collections;
2123

2224
import com.fasterxml.jackson.databind.module.SimpleModule;
23-
import org.springframework.security.oauth2.core.AuthorizationGrantType;
24-
import org.springframework.security.oauth2.core.ClientAuthenticationMethod;
25-
import org.springframework.security.oauth2.core.DefaultOAuth2AuthenticatedPrincipal;
26-
import org.springframework.security.oauth2.core.OAuth2AuthenticatedPrincipal;
27-
import org.springframework.security.oauth2.server.authorization.authentication.OAuth2ClientAuthenticationToken;
28-
import org.springframework.security.oauth2.server.authorization.client.RegisteredClient;
29-
import org.springframework.security.oauth2.server.authorization.settings.ClientSettings;
30-
import org.springframework.security.oauth2.server.authorization.settings.TokenSettings;
31-
import org.springframework.security.oauth2.server.resource.authentication.BearerTokenAuthentication;
3225

3326
public class OAuth2SecurityModule extends SimpleModule {
3427

@@ -38,16 +31,66 @@ public OAuth2SecurityModule() {
3831

3932
@Override
4033
public void setupModule(SetupContext context) {
41-
context.setMixInAnnotations(OAuth2AuthenticatedPrincipal.class, OAuth2AuthenticatedPrincipalMixin.class);
42-
context.setMixInAnnotations(DefaultOAuth2AuthenticatedPrincipal.class, OAuth2AuthenticatedPrincipalMixin.class);
43-
context.setMixInAnnotations(BearerTokenAuthentication.class, BearerTokenAuthenticationMixin.class);
44-
context.setMixInAnnotations(OAuth2ClientAuthenticationToken.class, OAuth2ClientAuthenticationTokenMixin.class);
45-
context.setMixInAnnotations(ClientAuthenticationMethod.class, ClientAuthenticationMethodMixin.class);
46-
context.setMixInAnnotations(RegisteredClient.class, RegisteredClientMixin.class);
47-
context.setMixInAnnotations(AuthorizationGrantType.class, AuthorizationGrantTypeMixin.class);
48-
context.setMixInAnnotations(ClientSettings.class, ClientSettingsMixin.class);
49-
context.setMixInAnnotations(TokenSettings.class, TokenSettingsMixin.class);
34+
setMixInAnnotations(
35+
context,
36+
"org.springframework.security.oauth2.core.OAuth2AuthenticatedPrincipal",
37+
"org.apache.dubbo.spring.security.oauth2.OAuth2AuthenticatedPrincipalMixin");
38+
setMixInAnnotations(
39+
context,
40+
"org.springframework.security.oauth2.core.DefaultOAuth2AuthenticatedPrincipal",
41+
"org.apache.dubbo.spring.security.oauth2.OAuth2AuthenticatedPrincipalMixin");
42+
setMixInAnnotations(
43+
context,
44+
"org.springframework.security.oauth2.server.resource.authentication.BearerTokenAuthentication",
45+
"org.apache.dubbo.spring.security.oauth2.BearerTokenAuthenticationMixin");
46+
setMixInAnnotations(
47+
context,
48+
"org.springframework.security.oauth2.server.authorization.authentication.OAuth2ClientAuthenticationToken",
49+
"org.apache.dubbo.spring.security.oauth2.OAuth2ClientAuthenticationTokenMixin");
50+
setMixInAnnotations(
51+
context,
52+
"org.springframework.security.oauth2.core.ClientAuthenticationMethod",
53+
ClientAuthenticationMethodMixin.class);
54+
setMixInAnnotations(
55+
context,
56+
"org.springframework.security.oauth2.server.authorization.client.RegisteredClient",
57+
"org.apache.dubbo.spring.security.oauth2.RegisteredClientMixin");
58+
setMixInAnnotations(
59+
context,
60+
"org.springframework.security.oauth2.core.AuthorizationGrantType",
61+
AuthorizationGrantTypeMixin.class);
62+
setMixInAnnotations(
63+
context,
64+
"org.springframework.security.oauth2.server.authorization.settings.ClientSettings",
65+
ClientSettingsMixin.class);
66+
setMixInAnnotations(
67+
context,
68+
"org.springframework.security.oauth2.server.authorization.settings.TokenSettings",
69+
TokenSettingsMixin.class);
5070
context.setMixInAnnotations(
5171
Collections.unmodifiableCollection(new ArrayList<>()).getClass(), UnmodifiableCollectionMixin.class);
5272
}
73+
74+
private void setMixInAnnotations(SetupContext context, String oauth2ClassName, String mixinClassName) {
75+
Class<?> oauth2Class = loadClassIfPresent(oauth2ClassName);
76+
if (oauth2Class != null) {
77+
context.setMixInAnnotations(oauth2Class, loadClassIfPresent(mixinClassName));
78+
}
79+
}
80+
81+
private void setMixInAnnotations(SetupContext context, String oauth2ClassName, Class<?> mixinClass) {
82+
Class<?> oauth2Class = loadClassIfPresent(oauth2ClassName);
83+
if (oauth2Class != null) {
84+
context.setMixInAnnotations(oauth2Class, mixinClass);
85+
}
86+
}
87+
88+
private Class<?> loadClassIfPresent(String oauth2ClassName) {
89+
try {
90+
return ClassUtils.forName(oauth2ClassName, OAuth2SecurityModule.class.getClassLoader());
91+
92+
} catch (Throwable ignored) {
93+
}
94+
return null;
95+
}
5396
}

0 commit comments

Comments
 (0)