20. @RegisteredOAuth2AuthorizedClient

Spring Security 允许使用@RegisteredOAuth2AuthorizedClient解析访问令牌。

Note

一个有效的示例可以在OAuth 2.0 WebClient WebFlux 示例中找到。

在为OAuth2 LoginOAuth2 Client配置 Spring Security 之后,可以使用以下方法解析OAuth2AuthorizedClient

@GetMapping("/explicit")
Mono<String> explicit(@RegisteredOAuth2AuthorizedClient("client-id") OAuth2AuthorizedClient authorizedClient) {
    // ...
}

它集成到 Spring Security 中以提供以下功能:

  • Spring Security 将自动刷新过期的令牌(如果存在刷新令牌)

  • 如果请求访问令牌但不存在,则 Spring Security 将自动请求访问令牌。

  • 对于authorization_code,这涉及执行重定向,然后重播原始请求

    • 对于client_credentials,只需请求并保存令牌

如果用户使用oauth2Login()进行了身份验证,则client-id是可选的。例如,以下将起作用:

@GetMapping("/implicit")
Mono<String> implicit(@RegisteredOAuth2AuthorizedClient OAuth2AuthorizedClient authorizedClient) {
    // ...
}

如果用户始终使用 OAuth2 登录进行身份验证,并且需要来自同一授权服务器的访问令牌,这将非常方便。