java - Spring Boot Security 中 OAuth2Client 中的 SSO
问题描述
我一直在阅读 Spring Security 中的 OAuth2 集成以及如何通过第三方身份提供者(例如 Google)实现身份验证/授权。
我使用注释实现了 SSO 登录@EnableOauth2Sso
,并将以下内容添加到我的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 的OAuth2 客户端手动配置官方网站上的指南,我看到它切换到@EnableOauth2Client
而不是@EnableOauth2Sso
它说:
首先,我们可以注入 OAuth2ClientContext 并使用它来构建我们添加到安全配置中的身份验证过滤器
是什么OAuth2ClientContext
?我查看了官方API 文档,它只是说它是一个接口,但仍然不确定它到底是什么以及它是如何使用的。
我是否遗漏了什么或官方文件不足?我仍然无法掌握 OAuth2ClientContext、OAuth2ClientAuthenticationProcessingFilter 和 OAuth2RestTemplate 如何协同工作以通过 SSO 在 Spring 中执行身份验证。
请指出任何正确的文档,以掌握基本知识。提前致谢。
解决方案
这是一个准备运行的示例。它针对授权服务器对客户端进行身份验证,还从资源服务器访问受保护的资源。
我仍在努力记录源代码并完成自述文件。如果您有任何问题,请随时问我。
推荐阅读
- node.js - 如何从strapi部署strapi和nuxt应用程序
- javascript - 将两个回调函数合二为一
- python - 如何在 Pyglet 窗口中嵌入 Matplotlib 图
- matplotlib - Python 3.10 上的“找不到满足 matplotlib==3.4.3 要求的版本”问题
- unit-testing - sequelize-test-helpers AssertionError:预期未定义等于“用户”
- c - c 中的 shell 程序运行但给出“lsh:没有这样的文件或目录。”
- laravel-livewire - 如何在 Livewire 中的 $refresh 之后添加另一个任务
- java - 根据列为字符串的用户存储数据的好方法?
- javascript - 未添加 HTML 内容
- ruby-on-rails - Rails 5:从数据库列填充下拉列表