Предварительные условия
Для Spring Security требуется среда выполнения Java 8 или выше.
Поскольку Spring Security стремится работать автономно, вам не нужно размещать какие-либо специальные конфигурационные файлы в среде выполнения Java. В частности, вам не нужно настраивать специальный файл политики Java Authentication and Authorization Service (JAAS) или размещать Spring Security в общих местах classpath.
Аналогично, если вы используете EJB Container или Servlet Container, вам не нужно размещать где-либо специальные конфигурационные файлы или включать Spring Security в загрузчик классов сервера. Все необходимые файлы содержатся внутри вашего приложения.
Такая конструкция обеспечивает максимальную гибкость при развертывании, поскольку вы можете скопировать целевой артефакт (будь то JAR, WAR или EAR) с одной системы на другую, и он сразу же заработает.
В этом разделе описано все, что требуется знать о получении двоичных файлов Spring Security. Чтобы получить исходный код, см. раздел "Исходный код".
Нумерация выпусков
Версии Spring Security классифицируются на MAJOR.MINOR.PATCH таким образом:
-
MAJOR-версии могут содержать критические изменения. Как правило, это делается для обеспечения повышенной безопасности в соответствии с современными методами защиты.
-
MINOR-версии содержат улучшения, но считаются пассивными обновлениями
-
Уровень PATCH должен быть идеально совместимым как с последующими, так и с предыдущими версиями, за исключением изменений, исправляющих ошибки.
Использование с Maven
Как и большинство проектов с открытым исходным кодом, Spring Security развертывает свои зависимости в виде артефактов Maven. В статьях этого раздела подробно описано, как использовать Spring Security вместе с Maven.
Spring Boot с использованием Maven
Spring Boot содержит стартер spring-boot-starter-security
, который объединяет связанные с Spring Security зависимости воедино. Самый простой и предпочтительный способ использования стартера – использовать Spring Initializr через интеграцию с IDE (Eclipse, IntelliJ, NetBeans) или через start.spring.io.
Кроме того, можно вручную добавить стартер, как показано в следующем примере:
<dependencies>
<!-- ... other dependency elements ... -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>
Поскольку Spring Boot предусматривает использование BOM-спецификации Maven для управления версиями зависимостей, указывать версию не требуется. Если необходимо переопределить версию Spring Security, можно сделать это, задав свойство Maven, как показано в следующем примере:
<properties>
<!-- ... -->
<spring-security.version>5.7.4</spring-security.version>
</properties>
Поскольку в Spring Security изменения вносятся только в основных выпусках, использовать более новую версию Spring Security с Spring Boot можно без опаски. Однако иногда может понадобиться обновить и версию Spring Framework. Сделать это можно, добавив свойство Maven, как показано в следующем примере:
<properties>
<!-- ... -->
<spring.version>5.3.23</spring.version>
</properties>
Если вы используете дополнительные функции (такие как LDAP, OpenID и другие), вам также необходимо будет добавить соответствующие модули и зависимости проекта.
Maven без использования Spring Boot
В случае работы со Spring Security без Spring Boot лучше всего будет использовать BOM-спецификацию для Spring Security, которая позволит обеспечить последовательное использование версии Spring Security во всем проекте. В следующем примере показано, как это сделать:
<dependencyManagement>
<dependencies>
<!-- ... other dependency elements ... -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-bom</artifactId>
<version>{spring-security-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Минимальный набор зависимостей Spring Security для Maven обычно выглядит следующим образом:
<dependencies>
<!-- ... other dependency elements ... -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
</dependency>
</dependencies>
Сборка фреймворка Spring Security выполняется на базе Spring Framework 5.3.23, но в целом он должен работать с любой более новой версией Spring Framework 5.x. Многие пользователи, вероятно, столкнутся с тем, что транзитивные зависимости Spring Security разрешают Spring Framework 5.3.23, что может вызвать странные проблемы с classpath. Самый простой способ решить эту проблему – использовать spring-framework-bom
в разделе <dependencyManagement>
вашего pom.xml
, как показано в следующем примере:
<dependencyManagement>
<dependencies>
<!-- ... other dependency elements ... -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>5.3.23</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
В предыдущем примере все транзитивные зависимости Spring Security гарантировано используют модули Spring 5.3.23.
Репозитории Maven
Все общедоступные выпуски (то есть версии, заканчивающиеся на .RELEASE) развертываются в Maven Central, поэтому в pom-файле не нужно объявлять дополнительные репозитории Maven.
В случае использования SNAPSHOT-версии необходимо убедиться, что был определен репозиторий для снапшот-версий Spring, как показано в следующем примере:
<repositories>
<!-- ... другие возможные элементы репозитория ... -->
<repository>
<id>spring-snapshot</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/snapshot</url>
</repository>
</repositories>
Если вы используете стабильную версию или предвыпускную версию, вам необходимо убедиться, что был определен репозиторий для стабильных версий Spring, как показано в следующем примере:
<repositories>
<!-- ... другие возможные элементы репозитория ... -->
<repository>
<id>spring-milestone</id>
<name>Spring Milestone Repository</name>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ