Spring 引导安全中的 OAuth2Client 中的 SSO

SSO in OAuth2Client in Spring Boot Security

我一直在阅读 Spring 安全中的 OAuth2 集成以及如何通过第三方身份提供商(例如 Google)实施 Authentication/Authorization。

我使用 @EnableOauth2Sso 注释实现了 SSO 登录,并将以下内容添加到我的 application.properties:

security:
  oauth2:
    client:
      clientId: 8d...f5e
      clientSecret: 2d...1b
      accessTokenUri: https://sso.domain.com/oauth/token
      userAuthorizationUri: https://sso.domain.com/oauth/authorize
      scope: openid
    resource:
      userInfoUri: https://sso.domain.com/userinfo

这看起来太神奇了,我不知道幕后发生了什么。按照 Spring 官方网站上 Manual Configuration of OAuth2 Client 的指南,我看到它切换到 @EnableOauth2Client 而不是 @EnableOauth2Sso,它说:

First off we can inject an OAuth2ClientContext and use it to build an authentication filter that we add to our security configuration

什么是OAuth2ClientContext?我查看了官方 API Docs,它只是说它是一个接口,但仍然不确定它到底是什么以及它是如何使用的。

是我遗漏了什么还是官方文档不够?我仍然无法掌握 OAuth2ClientContext、OAuth2ClientAuthenticationProcessingFilter 和 OAuth2RestTemplate 如何协同工作以通过 SSO 在 Spring 中执行身份验证。

请指向文档中任何正确的部分,以从根本上理解这一点。提前致谢。

这是一个现成的-运行example。它根据授权服务器对客户端进行身份验证,还从资源服务器访问受保护的资源。

我仍在努力记录源代码并完成自述文件。如果您有任何问题,请随时问我。