单点登录

所有 OAuth2 SSO 和资源服务器功能都移至 Spring Boot 在版本 1.3 中。您可以在 Spring Boot 用户指南中找到文档。

客户端令牌中继

如果您的应用是面向 OAuth2 客户端的用户(即已声明或),则它具有来自 Spring Boot 的请求范围。您可以 从这个上下文中创建你自己的,然后 autowired ,然后上下文将 始终将访问令牌转发到下游,同时刷新访问 令牌,如果它过期,则自动。(这些是 Spring 的功能 安全性和 Spring Boot。@EnableOAuth2Sso@EnableOAuth2ClientOAuth2ClientContextOAuth2RestTemplateOAuth2ProtectedResourceDetailsSpring中文文档

资源服务器令牌中继

如果你的应用有,你可能想要中继 传入令牌的下游到其他服务。如果您使用 a 联系下游服务,那么这只是一个 如何创建具有正确上下文的模板的问题。@EnableResourceServerRestTemplateSpring中文文档

如果服务用于对传入项进行身份验证 令牌(即它正在使用配置),那么您可以简单地使用自动连线创建一个(它将由 在到达后端代码之前进行身份验证过程)。等效地 (使用 Spring Boot 1.4),您可以注入 a 并获取它 您的配置。例如:UserInfoTokenServicessecurity.oauth2.user-info-uriOAuth2RestTemplateOAuth2ClientContextUserInfoRestTemplateFactoryOAuth2RestTemplateSpring中文文档

MyConfiguration.java
@Bean
public OAuth2RestTemplate restTemplate(UserInfoRestTemplateFactory factory) {
    return factory.getUserInfoRestTemplate();
}

然后,此 rest 模板将具有身份验证筛选器使用的相同(请求范围),因此您可以 使用它来发送具有相同访问令牌的请求。OAuth2ClientContextSpring中文文档

如果您的应用未使用但仍是客户端 (即它声明或),则 使用 Spring Security Cloud 任何用户 从遗嘱中创建也向前 令 牌。默认情况下,此功能作为 MVC 处理程序实现 拦截器,因此它仅适用于 Spring MVC。如果未使用 MVC 您可以使用自定义过滤器或 AOP 拦截器包装来提供相同的功能。UserInfoTokenServices@EnableOAuth2Client@EnableOAuth2SsoOAuth2RestOperations@AutowiredOAuth2ContextAccessTokenContextRelaySpring中文文档

这是一个基本的 示例显示使用创建的自动连线 REST 模板 elsewhere (“foo.com” 是接受与 周围的应用程序):Spring中文文档

MyController.java
@Autowired
private OAuth2RestOperations restTemplate;

@RequestMapping("/relay")
public String relay() {
    ResponseEntity<String> response =
      restTemplate.getForEntity("https://foo.com/bar", String.class);
    return "Success! (" + response.getBody() + ")";
}

如果您不想转发令牌(这是有效的 选择,因为您可能想扮演自己,而不是 向您发送令牌的客户端),那么您只需要创建自己的令牌,而不是自动连接默认令牌。OAuth2ContextSpring中文文档

假装客户端也会选择一个使用 如果可用的拦截器,所以他们也应该做一个 令牌中继任何会的地方。OAuth2ClientContextRestTemplateSpring中文文档

所有 OAuth2 SSO 和资源服务器功能都移至 Spring Boot 在版本 1.3 中。您可以在 Spring Boot 用户指南中找到文档。