16
16
*/
17
17
package org .apache .dubbo .spring .security .oauth2 ;
18
18
19
+ import org .apache .dubbo .common .utils .ClassUtils ;
20
+
19
21
import java .util .ArrayList ;
20
22
import java .util .Collections ;
21
23
22
24
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 ;
32
25
33
26
public class OAuth2SecurityModule extends SimpleModule {
34
27
@@ -38,16 +31,66 @@ public OAuth2SecurityModule() {
38
31
39
32
@ Override
40
33
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 );
50
70
context .setMixInAnnotations (
51
71
Collections .unmodifiableCollection (new ArrayList <>()).getClass (), UnmodifiableCollectionMixin .class );
52
72
}
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
+ }
53
96
}
0 commit comments