1
0
mirror of synced 2026-08-01 07:47:03 +00:00

Retrieving the UserInfo is conditional

Fixes gh-4451
This commit is contained in:
Joe Grandja
2017-09-29 10:51:02 -04:00
parent f3828924ff
commit ad91adf9dc
5 changed files with 112 additions and 10 deletions
@@ -21,12 +21,14 @@ import org.springframework.security.oauth2.client.authentication.OAuth2UserAuthe
import org.springframework.security.oauth2.core.user.OAuth2User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.reactive.function.client.ClientRequest;
import org.springframework.web.reactive.function.client.ExchangeFilterFunction;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;
import java.util.Collections;
import java.util.Map;
/**
@@ -46,13 +48,18 @@ public class MainController {
@RequestMapping("/userinfo")
public String userinfo(Model model, OAuth2UserAuthenticationToken authentication) {
Map userAttributes = this.webClient
.filter(oauth2Credentials(authentication))
.get()
.uri(authentication.getClientAuthentication().getClientRegistration().getProviderDetails().getUserInfoEndpoint().getUri())
.retrieve()
.bodyToMono(Map.class)
.block();
Map userAttributes = Collections.emptyMap();
String userInfoEndpointUri = authentication.getClientAuthentication().getClientRegistration()
.getProviderDetails().getUserInfoEndpoint().getUri();
if (!StringUtils.isEmpty(userInfoEndpointUri)) { // userInfoEndpointUri is optional for OIDC Clients
userAttributes = this.webClient
.filter(oauth2Credentials(authentication))
.get()
.uri(userInfoEndpointUri)
.retrieve()
.bodyToMono(Map.class)
.block();
}
model.addAttribute("userAttributes", userAttributes);
return "userinfo";
}