spring security and oauth dependencies?



我很困惑这些依赖关系之间有什么不同,我应该使用哪一个。你能解释一下它们的区别吗?

<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-clientspring-security-oauth2-jose的依赖,因为它们都是传递依赖。

spring-security-config对于在Java配置文件中定义Spring @Beans很有用。除了启动器之外,您可能还需要它。

最新更新