6. 安全
6.1. 单点登录
所有 OAuth2 SSO 和资源服务器功能都已移至 Spring Boot 在 1.3 版本中。您可以在 Spring Boot 用户指南中找到文档。 |
6.1.1. 客户端 Token Relay
如果您的应用程序是面向用户的 OAuth2 客户端(即已声明 or ),则它具有来自 Spring Boot 的 in 请求范围。您可以
从此上下文中创建自己的 Cookie,并在
autowired 的 ,然后上下文将
始终将访问令牌转发到下游,同时刷新访问权限
令牌。(这些是 Spring 的功能
Security 和 Spring Boot 的 Boot。@EnableOAuth2Sso
@EnableOAuth2Client
OAuth2ClientContext
OAuth2RestTemplate
OAuth2ProtectedResourceDetails
6.1.2. 资源服务器 Token Relay
如果您的应用程序具有,您可能希望中继
传入令牌下游到其他服务。如果您使用 a 联系下游服务,则这只是一个
如何创建具有正确上下文的模板的问题。@EnableResourceServer
RestTemplate
如果您的服务用于对传入的
令牌(即它正在使用配置),那么你可以简单地使用自动连接的
authentication 进程)。等效
(在 Spring Boot 1.4 中),您可以注入 a 并获取其
您的配置。例如:UserInfoTokenServices
security.oauth2.user-info-uri
OAuth2RestTemplate
OAuth2ClientContext
UserInfoRestTemplateFactory
OAuth2RestTemplate
@Bean
public OAuth2RestTemplate restTemplate(UserInfoRestTemplateFactory factory) {
return factory.getUserInfoRestTemplate();
}
然后,此 rest 模板将具有与身份验证筛选器使用的相同(请求范围),因此您可以
使用它来发送具有相同访问令牌的请求。OAuth2ClientContext
如果您的应用程序未使用,但仍是客户端
(即它声明 或 ),然后
使用 Spring Security Cloud 用户
从 Will 创建 也向前
令 牌。默认情况下,此功能作为 MVC 处理程序实现
interceptor 中,因此它只能在 Spring MVC 中工作。如果您未使用 MVC
您可以使用自定义过滤器或 AOP 拦截器包装 来提供相同的功能。UserInfoTokenServices
@EnableOAuth2Client
@EnableOAuth2Sso
OAuth2RestOperations
@Autowired
OAuth2Context
AccessTokenContextRelay
下面是一个基本的 显示使用已创建的自动装配 REST 模板的示例 elsewhere (“foo.com” 是接受与 周围的应用程序):
@Autowired
private OAuth2RestOperations restTemplate;
@RequestMapping("/relay")
public String relay() {
ResponseEntity<String> response =
restTemplate.getForEntity("https://foo.com/bar", String.class);
return "Success! (" + response.getBody() + ")";
}
如果您不想转发令牌(这是有效的
选择,因为您可能希望扮演您自己,而不是
客户端)的令牌,则您只需创建自己的令牌,而不是自动装配默认令牌。OAuth2Context
假客户端也会选择一个使用 if it is available 的拦截器,所以他们也应该执行一个
token relay 中继到任何会的地方。OAuth2ClientContext
RestTemplate