Requisitos previos

Spring Security requiere el tiempo de ejecución de Java 8 o superior.

Debido a que Spring Security pretende ser independiente, no es necesario colocar ningún archivo de configuración especial en el tiempo de ejecución de Java. En particular, no necesita configurar un archivo de política especial del Servicio de autenticación y autorización de Java (JAAS) ni colocar Spring Security en ubicaciones de classpath comunes.

Del mismo modo, si utiliza un contenedor EJB o un contenedor de servlet, no necesita colocar archivos de configuración especiales en ningún lugar ni incluir Spring Security en el cargador de clases del servidor. Todos los archivos necesarios están contenidos en su aplicación.

Este diseño permite la máxima flexibilidad de implementación porque puede copiar el artefacto de destino (ya sea un JAR, WAR o EAR) de un sistema a otro y hacer que funcione inmediatamente.

Esta sección describe todo lo que necesita saber sobre cómo obtener archivos binarios de Spring Security. Para obtener el código fuente, consulte "Código fuente".

Numeración de números

Las versiones de Spring Security están clasificadas por MAJOR.MINOR.PATCH de la siguiente manera:

  • Las versiones PRINCIPALES pueden contener cambios importantes. Normalmente, esto se hace para garantizar una mayor seguridad de acuerdo con los métodos de seguridad modernos.

  • Las versiones MENORES contienen mejoras, pero se consideran actualizaciones pasivas

  • El nivel PATCH debe ser perfectamente compatible tanto con las versiones posteriores como con las anteriores, salvo cambios que corrijan errores.

Usar con Maven

Como la mayoría de los proyectos de código abierto, Spring Security implementa sus dependencias como artefactos Maven. Los artículos de esta sección detallan cómo utilizar Spring Security con Maven.

Arranque de primavera usando Maven

Spring Boot contiene un spring-boot-starter-security inicial que agrupa las dependencias relacionadas con Spring Security. La forma más sencilla y preferida de utilizar el iniciador es utilizar Spring Initializr mediante integración con IDE (Eclipse, IntelliJ, NetBeans) o a través de start.spring.io.

También puedes agregar manualmente un iniciador, como se muestra en el siguiente ejemplo:

pom.xml

<dependencies>
  <!-- ... otros elementos de dependencia ... -->
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
  </dependency>
</dependencies>

Debido a que Spring Boot utiliza la lista de materiales de Maven para versionar las dependencias, no es necesario especificar una versión. Si necesita anular la versión de Spring Security, puede hacerlo configurando la propiedad Maven, como se muestra en el siguiente ejemplo:

pom.xml
<properties>
  <!-- ... -->
  <spring-security.version>5.7.4</spring-security.version>
</properties>

Dado que Spring Security cambia solo en las versiones principales, puede utilizar de forma segura una versión más nueva de Spring Security con Spring Boot. Sin embargo, a veces es posible que también necesites actualizar la versión de Spring Framework. Puede hacer esto agregando una propiedad Maven, como se muestra en el siguiente ejemplo:

pom.xml
<properties>
  <!-- ... -->
  <spring.version>5.3.23</spring.version>
</properties>

Si utiliza funciones adicionales (como LDAP, OpenID y otras), también deberá agregar los módulos y dependencias del proyecto adecuados.

Maven sin usar Spring Boot

Si está trabajando con Spring Security sin Spring Boot, lo mejor que puede hacer es utilizar la especificación BOM para Spring Security, lo que garantizará que la versión de Spring Security se utilice de forma coherente en todo el proyecto. El siguiente ejemplo muestra cómo hacer esto:

pom.xml

<dependencyManagement>
  <dependencies>
    <!-- ... otros elementos de dependencia ... -->
    <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>

El conjunto mínimo de dependencias de Spring Security para Maven suele tener este aspecto:

pom.xml

<dependencies>
  <!-- ... otros elementos de dependencia ... -->
  <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 se basa en Spring Framework 5.3.23, pero generalmente debería funcionar con cualquier versión más reciente de Spring Framework 5.x. Muchos usuarios probablemente encontrarán que las dependencias transitivas de Spring Security se resuelven con Spring Framework 5.3.23, lo que puede causar problemas extraños de classpath. La forma más sencilla de resolver este problema es utilizar spring-framework-bom en la sección <dependencyManagement> de su pom.xml como se muestra. en el siguiente ejemplo:

pom.xml

<dependencyManagement>
  <dependencies>
    <!-- ... otros elementos de dependencia ... -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-framework-bom</artifactId>
      <version>5.3.23</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

En el ejemplo anterior, se garantiza que todas las dependencias transitivas de Spring Security utilizarán módulos Spring 5.3.23.

Este enfoque se basa en el concepto de lista de materiales (BOM) de Maven y solo está disponible en Maven 2.0.9+.

Repositorios Maven

Todas las versiones públicas (es decir, las versiones que terminan en .RELEASE) se implementan en Maven Central, por lo que no es necesario declarar repositorios de Maven adicionales en el archivo pom.

Si está utilizando la versión SNAPSHOT, debe asegurarse de que se haya definido un repositorio para las versiones de instantáneas de Spring, como se muestra en el siguiente ejemplo:

pom.xml

<repositories>
  <!-- ... otros posibles elementos del repositorio ... -->
  <repository>
    <id>spring-snapshot</id>
    <name>Spring Snapshot Repository</name>
    <url>https://repo.spring.io/snapshot</url>
  </repository>
</repositories>

Si está utilizando una versión estable o preliminar, debe asegurarse de que se haya definido un repositorio para las versiones estables de Spring, como se muestra en el siguiente ejemplo:

pom.xml

<repositories>
  <!-- ... otros posibles elementos del repositorio ... -->
  <repository>
    <id>spring-milestone</id>
    <name>Spring Milestone Repository</name>
    <url>https://repo.spring.io/milestone</url>
  </repository>
</repositories>
        <repositorios>