spring-boot-starter-oauth2-client、spring-cloud-starter-oauth2 和 spring-security-oauth2 之间有什么区别

2024-01-24

我正在为 OAUTH2 中的 client_credentials 授予类型流开发客户端应用程序。

我无法决定在我的项目中为此目的使用以下依赖项。

  1. spring-boot-starter-oauth2-客户端
  2. spring-cloud-starter-oauth2
  3. 弹簧安全 oauth2

我提到了这个文档 https://github.com/spring-projects/spring-security/wiki/OAuth-2.0-Features-Matrix#client-support来自 spring-projects,其中在客户端支持部分下有一个描述可用选项的表格。但我无法理解哪一列引用了上述哪个依赖项。

我想配置一个WebClient or RestTemplate它在访问资源服务器之前自动从身份验证服务器检索 OAUTH2 令牌。

请指导我为我的项目选择合适的工件。


如果您使用 Spring Boot 您应该选择org.springframework.boot:spring-boot-starter-oauth2-client.
这包括 Spring Security 的 OAuth 2.0 客户端支持,并提供 Spring Boot 自动配置来设置 OAuth2/Open ID Connect 客户端。
您可以阅读如何在 Spring Boot 中配置客户端参考文档 https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#web.security.oauth2.client.
您还可以在 Spring Security 中找到更多详细信息参考文档 https://docs.spring.io/spring-security/reference/servlet/oauth2/client/index.html.

如果您不使用 Spring Boot 那么您应该选择org.springframework.security:spring-security-oauth2-client。这还提供了 Spring Security 最新的 OAuth 2.0 客户端支持,但不包括 Spring Boot 自动配置。
对应的文档也是Spring Security参考文档 https://docs.spring.io/spring-security/reference/servlet/oauth2/client/index.html.

你提到的第三个依赖org.springframework.security.oauth:spring-security-oauth2不应使用,因为它是遗留 Spring Security OAuth https://spring.io/projects/spring-security-oauth项目,现已弃用。
该库提供的功能现已移至 Spring Security 中。
这就是迁移指南 https://github.com/spring-projects/spring-security/wiki/OAuth-2.0-Features-Matrix#client-support描述了从遗留项目迁移到最新的 Spring Security 支持。

您不应该使用org.springframework.cloud:spring-cloud-starter-oauth2此时,因为它依赖于旧版 OAuth 支持。
随着 Spring Cloud 团队更新到最新的 Spring Security 支持,这种情况将来可能会发生变化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

spring-boot-starter-oauth2-client、spring-cloud-starter-oauth2 和 spring-security-oauth2 之间有什么区别 的相关文章

随机推荐