【发布时间】:2019-08-21 20:28:11
【问题描述】:
我一直在阅读有关 Spring Security 中的 OAuth2 集成以及如何通过第三方身份提供者(例如 Google)实现身份验证/授权。
我使用@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,它说:
首先,我们可以注入 OAuth2ClientContext 并使用它来构建我们添加到安全配置中的身份验证过滤器
OAuth2ClientContext 是什么?我查看了官方API Docs,它只是说它是一个接口,但仍然不确定它到底是什么以及它是如何使用的。
是我遗漏了什么还是官方文档不足?我仍然无法掌握 OAuth2ClientContext、OAuth2ClientAuthenticationProcessingFilter 和 OAuth2RestTemplate 如何协同工作以通过 SSO 在 Spring 中执行身份验证。
请指出任何正确的文档部分以掌握基本知识。提前致谢。
【问题讨论】:
-
您需要 Oauth2 客户端示例吗?你不会找到太多关于这个主题的文档,一个例子是最好的。
-
@EugenCovaci 示例也很好。我的目标是了解在没有魔法注释的情况下这是如何在内部发生的。有了这些知识,我想在身份验证后自定义一些方面。我觉得很奇怪,它没有记录不同的部分是如何工作的。
-
我能找到的最好的就是这个:baeldung.com/spring-security-oauth2-authentication-with-reddit 但它很臃肿,它没有提供必要的东西。
-
这个baeldung.com/spring-oauth-login-webflux 是为WebFlux 准备的。如果你等到明天,我会为 Spring Web 做一个简单的例子。
标签: java spring spring-boot spring-security spring-security-oauth2