package com.revengemission.sso.oauth2.client.controller; import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; import org.springframework.security.core.Authentication; import org.springframework.security.oauth2.client.OAuth2AuthorizedClient; import org.springframework.security.oauth2.client.annotation.RegisteredOAuth2AuthorizedClient; import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.client.RestTemplate; import javax.servlet.http.HttpServletRequest; @Controller public class FrontIndexController { RestTemplate restTemplate; public FrontIndexController(RestTemplateBuilder restTemplateBuilder) { super(); //可以全局配置converter等 this.restTemplate = restTemplateBuilder.build(); } @GetMapping(value = {"/", "/index"}) public String index(HttpServletRequest request, Authentication authentication, Model model) { return "index"; } @GetMapping(value = "/user") public String user(HttpServletRequest request, OAuth2AuthenticationToken oAuth2AuthenticationToken, @RegisteredOAuth2AuthorizedClient OAuth2AuthorizedClient authorizedClient, Model model) { return "securedPage"; } @ResponseBody @GetMapping(value = "/resource") public Object resource(HttpServletRequest request, OAuth2AuthenticationToken oAuth2AuthenticationToken, @RegisteredOAuth2AuthorizedClient OAuth2AuthorizedClient authorizedClient, Model model) { String url = "http://localhost:10580/coupon/list"; HttpHeaders headers = new HttpHeaders(); headers.add("Authorization", "Bearer " + authorizedClient.getAccessToken().getTokenValue()); ResponseEntity<Object> response = restTemplate.exchange(url, HttpMethod.GET, new HttpEntity<>(headers), Object.class); return response.getBody(); } }