我很困惑这些依赖关系之间有什么不同,我应该使用哪一个。你能解释一下它们的区别吗?
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!---------------------------------------------------------->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-oauth2-client</artifactId>
</dependency>
<!---------------------------------------------------------->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-oauth2-jose</artifactId>
</dependency>
<!---------------------------------------------------------->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
</dependency>
和何时使用
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
</dependency>
spring-boot-starter-xxx
毫无疑问是Spring应用程序的启动器。:
- 拉出主题上所需的大部分依赖项
- 自动连接许多有用的bean
- 允许从属性(应用程序)中定义许多配置选项。属性,应用。yaml,命令行参数,环境变量,…)
对于OAuth2, Spring提供了两个启动器:
spring-boot-starter-oauth2-resource-server
如果你的应用程序是一个资源服务器(包含@RestController
或@Controller
与@ResponseBody
)spring-boot-starter-oauth2-client
,如果你的应用是客户端@Controller
,方法返回模板名- 使用REST客户端(如
WebClient
)来使用OAuth2保护的web服务
我还编写了启动器,它是spring-boot-starter-oauth2-resource-server
的瘦包装器,可以用几个属性替换所有必要的Java配置。请参阅README和教程了解更多细节(并了解它可以节省多少工作量和错误)
一个应用程序可能既是资源服务器又是客户端,在这种情况下,你需要在你的依赖项中声明两个启动器。
如果你对如何配置资源服务器有疑问,你可以看看我已经链接的教程。有一些是用春季开胃菜或我的。一个甚至是资源服务器和客户端,thyymeleaf页面使用WebClient使用安全的REST资源)
当使用OAuth2启动器时,你不需要声明对spring-boot-starter-security
,spring-security-oauth2-client
或spring-security-oauth2-jose
的依赖,因为它们都是传递依赖。
spring-security-config
对于在Java配置文件中定义Spring @Beans很有用。除了启动器之外,您可能还需要它。