该版本仍在开发中,尚未被视为稳定。最新稳定版本请使用Spring Cloud Commons 5.0.0spring-doc.cadn.net.cn

安全

单一登录

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

客户端Tokens中继

如果你的应用是一个面向用户的OAuth2客户端(即已声明@EnableOAuth2Sso@EnableOAuth2Client) 则有OAuth2ClientContext在春季靴子的请求范围中。您可以 你自己创造OAuth2Rest模板基于此上下文和 自动接线OAuth2ProtectedResourceDetails(资源详情),然后上下文将 始终将访问Tokens转发到下游,同时刷新访问 如果Tokens过期,则自动生效。(这些是Spring的特征 安全与Spring靴。)spring-doc.cadn.net.cn

资源服务器Tokens中继

如果你的应用有@EnableResourceServer你可能想转达 输入Tokens下游至其他服务。如果你使用Rest模板联系下游服务,这只是一个 关键在于如何用合适的上下文创建模板。spring-doc.cadn.net.cn

如果你的服务使用用户信息Tokens服务用于认证来电 标记(即它使用security.oauth2.user-info-uri然后你只需创建一个OAuth2Rest模板使用自动接线OAuth2ClientContext(它将由 在进入后端代码之前,认证过程)。等价地 (用 Spring Boot 1.4 版本),你可以注入一个用户信息休息模板工厂并抓住它OAuth2Rest模板在 你的配置。例如:spring-doc.cadn.net.cn

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

这个休止模板也将拥有相同的内容OAuth2ClientContext(请求范围)是认证过滤器使用的,所以你可以 用它发送使用相同访问Tokens的请求。spring-doc.cadn.net.cn

如果你的应用没有使用用户信息Tokens服务但仍是客户 (即它宣告@EnableOAuth2Client@EnableOAuth2Sso),则 使用 Spring Security Cloud 的任何版本OAuth2RestOperations(可作)的OAuth2RestOperations(可作的设备)那就是用户 由@Autowired OAuth2Context也会转发 Tokens。该功能默认以 MVC 处理程序形式实现 拦截者,所以只在春季MVC中有效。如果你没有使用 MVC 你可以用自定义Filter或AOP拦截器来包裹AccessTokenContextRelay以提供相同的功能。spring-doc.cadn.net.cn

这里有个基本情况 展示自动接线静止模板的示例 其他地方(“foo.com”是接受相同Tokens的资源服务器,满足 周边应用):spring-doc.cadn.net.cn

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() + ")";
}

如果你不想转发Tokens(这是合理的 选择,因为你可能想以真实的身份行事,而不是 发送Tokens的客户端),然后你只需创建自己的TokensOAuth2Context而不是自动接线默认的那个。spring-doc.cadn.net.cn

假装客户还会发现一架使用以下条件的拦截机OAuth2ClientContext如果有的话,他们也应该做一个 任何当Rest模板愿意。spring-doc.cadn.net.cn