7
7
import java .util .List ;
8
8
import java .util .Map ;
9
9
import java .util .Optional ;
10
+ import java .util .stream .Collectors ;
10
11
import lombok .RequiredArgsConstructor ;
11
12
import lombok .extern .log4j .Log4j2 ;
12
13
import org .jetbrains .annotations .Nullable ;
20
21
import org .springframework .security .config .annotation .method .configuration .EnableReactiveMethodSecurity ;
21
22
import org .springframework .security .config .annotation .web .reactive .EnableWebFluxSecurity ;
22
23
import org .springframework .security .config .web .server .ServerHttpSecurity ;
24
+ import org .springframework .security .core .GrantedAuthority ;
23
25
import org .springframework .security .oauth2 .client .oidc .userinfo .OidcReactiveOAuth2UserService ;
24
26
import org .springframework .security .oauth2 .client .oidc .userinfo .OidcUserRequest ;
25
27
import org .springframework .security .oauth2 .client .oidc .web .server .logout .OidcClientInitiatedServerLogoutSuccessHandler ;
@@ -69,12 +71,14 @@ public ReactiveOAuth2UserService<OidcUserRequest, OidcUser> customOidcUserServic
69
71
.flatMap (user -> {
70
72
var provider = getProviderByProviderId (request .getClientRegistration ().getRegistrationId ());
71
73
final var extractor = getExtractor (provider , acs );
72
- if (extractor == null ) {
73
- return Mono .just (user );
74
+ if (extractor != null ) {
75
+ return extractor .extract (acs , user , Map .of ("request" , request , "provider" , provider ))
76
+ .map (groups -> new RbacOidcUser (user , groups ));
77
+ } else {
78
+ return Mono .just (new RbacOidcUser (
79
+ user ,
80
+ user .getAuthorities ().stream ().map (GrantedAuthority ::getAuthority ).collect (Collectors .toSet ())));
74
81
}
75
-
76
- return extractor .extract (acs , user , Map .of ("request" , request , "provider" , provider ))
77
- .map (groups -> new RbacOidcUser (user , groups ));
78
82
});
79
83
}
80
84
@@ -85,12 +89,14 @@ public ReactiveOAuth2UserService<OAuth2UserRequest, OAuth2User> customOauth2User
85
89
.flatMap (user -> {
86
90
var provider = getProviderByProviderId (request .getClientRegistration ().getRegistrationId ());
87
91
final var extractor = getExtractor (provider , acs );
88
- if (extractor == null ) {
89
- return Mono .just (user );
92
+ if (extractor != null ) {
93
+ return extractor .extract (acs , user , Map .of ("request" , request , "provider" , provider ))
94
+ .map (groups -> new RbacOAuth2User (user , groups ));
95
+ } else {
96
+ return Mono .just (new RbacOAuth2User (
97
+ user ,
98
+ user .getAuthorities ().stream ().map (GrantedAuthority ::getAuthority ).collect (Collectors .toSet ())));
90
99
}
91
-
92
- return extractor .extract (acs , user , Map .of ("request" , request , "provider" , provider ))
93
- .map (groups -> new RbacOAuth2User (user , groups ));
94
100
});
95
101
}
96
102
0 commit comments