Spring Security - Maven



Spring Security是一個類似於Spring框架的模組化框架。Spring Security有三個主要的模組,如下所示:

  • Spring Security Core − 提供身份驗證和訪問控制功能。此模組是所有Spring Security專案/模組所必需的。

  • Spring Security Web − 為基於Web的專案提供Spring Security支援。

  • Spring Security Config − 提供Spring Security XML名稱空間和註解。

對於其他API支援,例如LDAP、OpenID、ACL、CAS和OAuth,Spring Security提供相應的模組,如下所示:

  • LDAP − Spring Security LDAP

  • OpenID − Spring Security OpenID

  • ACL − Spring Security ACL

  • CAS − Spring Security CAS

  • OAuth2 − Spring Security OAuth

Maven 模組

要在Maven中開始使用Spring Security和Spring整合,我們可以定義具有其版本的屬性,如下所示:

屬性

<properties>  
...
   <spring.security.version>5.3.4.RELEASE</spring.security.version>
   <spring.version>5.2.8.RELEASE</spring.version>
</properties>

Spring Security和Spring框架的版本是獨立的,並且處於不同的釋出週期,因此它們的相容版本可能不同。

依賴項

Spring Security的Maven專案遵循spring-security-*命名約定,Spring專案類似於spring-*。對於上面討論的專案,以下是Maven依賴項列表:

  • Spring Security Core − spring-security-core

  • Spring Security Web − spring-security-web

  • Spring Security Config − spring-security-config

  • LDAP − spring-security-ldap

  • OpenID − spring-security-openid

  • ACL − spring-security-acl

  • CAS − spring-security-cas

  • OAuth2 − spring-security-oauth2

對於Spring,我們可以使用spring-webmvc專案作為頂級依賴項,Maven將自動解析以下相關依賴項。

  • Spring Core − spring-core

  • Spring Context − spring-context

  • Spring Beans − spring-beans

  • Spring AOP − spring-aop

  • Spring Expressions − spring-expression

  • Spring JCL − spring-jcl

  • Spring Web − spring-web

  • Spring WebMVC − spring-webmvc

示例 - Spring 的 POM

以下是一個示例POM.XML,我們在其中使用Maven使用Spring和Spring Security依賴項。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.tutorialspoint</groupId>
   <artifactId>SpringSecurityFormLogin</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>Spring Security Form Login</name>
   <description>A Sample Spring Security Form Login Project</description>
   <packaging>war</packaging>  
   <properties>  
      <maven.compiler.target>1.8</maven.compiler.target>  
      <maven.compiler.source>1.8</maven.compiler.source>  
      <spring.security.version>5.3.4.RELEASE</spring.security.version>
      <spring.version>5.2.8.RELEASE</spring.version>
   </properties>  
   <dependencies>  
      <dependency>  
         <groupId>org.springframework</groupId>  
         <artifactId>spring-webmvc</artifactId>  
         <version>${spring.version}</version>  
      </dependency>  
      <dependency>  
         <groupId>org.springframework.security</groupId>  
         <artifactId>spring-security-web</artifactId>  
         <version>${spring.security.version}</version>  
      </dependency>  
      <dependency>  
         <groupId>org.springframework.security</groupId>  
         <artifactId>spring-security-core</artifactId>  
         <version>${spring.security.version}</version>  
      </dependency>  
      <dependency>  
         <groupId>org.springframework.security</groupId>  
         <artifactId>spring-security-config</artifactId>  
         <version>${spring.security.version}</version>  
      </dependency>  
      <dependency>  
         <groupId>javax.servlet</groupId>  
         <artifactId>javax.servlet-api</artifactId>  
         <version>3.1.0</version>  
         <scope>provided</scope>  
      </dependency>  
      <dependency>  
         <groupId>javax.servlet</groupId>  
         <artifactId>jstl</artifactId>  
         <version>1.2</version>  
      </dependency>  
   </dependencies>  
   <build>  
      <plugins>  
         <plugin>  
            <groupId>org.apache.maven.plugins</groupId>  
            <artifactId>maven-war-plugin</artifactId>  
            <version>2.6</version>  
            <configuration>  
               <failOnMissingWebXml>false</failOnMissingWebXml>  
            </configuration>  
         </plugin>  
      </plugins>  
   </build>  
</project>

Spring Boot - Spring Security 整合

Spring Boot使用spring-boot-starter-security作為啟動依賴項,提供了與Spring Security更簡單、更容易的整合。它將自動解析所有相關依賴項。

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-security</artifactId>
</dependency>

示例 - Spring Boot 的 POM

以下是一個示例POM.XML,我們在其中使用Maven使用Spring Boot和Spring Security依賴項。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>3.3.1</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>
   <groupId>com.tutorialspoint.security</groupId>
   <artifactId>formlogin</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>formlogin</name>
   <description>Demo project for Spring Boot</description>
   <url/>
   <licenses>
      <license/>
   </licenses>
   <developers>
      <developer/>
   </developers>
   <scm>
      <connection/>
      <developerConnection/>
      <tag/>
      <url/>
   </scm>
   <properties>
      <java.version>21</java.version>
   </properties>
   <dependencies>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-security</artifactId>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-thymeleaf</artifactId>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <dependency>
         <groupId>org.thymeleaf.extras</groupId>
         <artifactId>thymeleaf-extras-springsecurity6</artifactId>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-devtools</artifactId>
         <scope>runtime</scope>
         <optional>true</optional>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.springframework.security</groupId>
         <artifactId>spring-security-test</artifactId>
         <scope>test</scope>
      </dependency>
   </dependencies>
   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>
</project>
廣告