Vårsikkerhet med Maven

1. Oversikt

I denne artikkelen forklarer vi hvordan du konfigurerer Vårsikkerhet med Maven og gå gjennom spesifikke bruksområder for bruk av Spring Security-avhengigheter. Du finner de siste Spring Security-utgivelsene på Maven Central.

Dette er en oppfølging av forrige Spring with Maven-artikkel, så for våravhengigheter som ikke er sikkerhet, er det stedet å starte.

2. Vårsikkerhet med Maven

2.1. vår-sikkerhetskjerne

Core Spring Security-støtte - vår-sikkerhetskjerne - inneholder autentisering og tilgangskontrollfunksjonalitet. Denne avhengigheten er obligatorisk å inkludere for alle prosjekter som bruker Spring Security.

I tillegg vår-sikkerhetskjerne støtter frittstående (ikke-web) applikasjoner, metodesikkerhet og JDBC:

 5.3.4.RELEASE 5.2.8.RELEASE org.springframework.security spring-security-core $ {spring-security.version} 

Noter det Våren og vårsikkerheten er på forskjellige utgivelsesplaner, så det er ikke alltid en 1: 1-kamp mellom versjonsnumrene.

Hvis du jobber med eldre versjoner av Spring - er det veldig viktig å forstå det faktum at, uintuitivt, Spring Security 4.1.x er ikke avhengig av Spring 4.1.x-utgivelser! For eksempel, da Spring Security 4.1.0 ble utgitt, var Spring core framework allerede på 4.2.x og inkluderer dermed den versjonen som kompileringsavhengighet. Planen er å justere disse avhengighetene nærmere i fremtidige utgivelser - se denne JIRA for flere detaljer - men foreløpig har dette praktiske implikasjoner som vi vil se på neste.

2.2. vår-sikkerhets-web

Å legge til Nettstøtte for Spring Security, vi trenger vår-sikkerhets-web avhengighet:

 org.springframework.security spring-security-web $ {spring-security.version} 

Dette inneholder filtre og tilhørende nettsikkerhetsinfrastruktur som muliggjør tilgang til URL-kontroll i et Servlet-miljø.

2.3. Vårsikkerhet og eldre våravhengighetsproblem

Denne nye avhengigheten viser også et problem for Maven-avhengighetsgrafen. Som nevnt ovenfor avhenger ikke Spring Security-krukker av de nyeste Spring-kjernekrukkene (men av den forrige versjonen). Dette kan føre til disse eldre avhengigheter tar seg opp på toppen av klassestien i stedet for de nyere 5.x vårgjenstandene.

For å forstå hvorfor dette skjer, må vi se på hvordan Maven løser konflikter. I tilfelle en versjonskonflikt, vil Maven plukke krukken som er nærmest roten til treet. For eksempel, vårkjernen er definert av begge vår-orm (med 5.0.0.UTGIVELSE versjon) men også av vår-sikkerhetskjerne (med 5.0.2.UTSLIPP versjon). Så i begge tilfeller, vår-jdbc er definert på en dybde på 1 fra root pom av prosjektet vårt. På grunn av det vil det faktisk ha betydning i hvilken rekkefølge vår-orm og vår-sikkerhetskjerne er definert i vår egen pom. Den første vil prioritere så vi kan ende opp med begge versjonene på klassestien vår.

For å løse dette problemet, må vi definere eksplisitt noen av våravhengighetene i vår egen pom og ikke stole på den implisitte Maven avhengighetsoppløsningsmekanismen. Å gjøre dette vil sette den aktuelle avhengigheten på dybden 0 fra vår pom (som den er definert i selve pom), så den vil ta prioritet. Alt av følgende faller i samme kategori, og alle må defineres eksplisitt, enten direkte eller for multimodulprosjekter, i avhengighetLedelse element av foreldrene:

 org.springframework spring-core $ {spring-version} org.springframework spring-context $ {spring-version} org.springframework spring-jdbc $ {spring-version} org.springframework spring-beans $ {spring-version} org. springframework spring-aop $ {spring-version} org.springframework spring-tx $ {spring-version} org.springframework spring-expression $ {spring-version} org.springframework spring-web $ {spring-version} 

2.4. vår-sikkerhet-config og andre

For å bruke det rike Spring Security XML-navnområdet og merknader, trenger vi vår-sikkerhet-config avhengighet:

 org.springframework.security spring-security-config $ {spring-security.version} 

Til slutt har LDAP, ACL, CAS, OAuth og OpenID-støtte sine egne avhengigheter i Spring Security: vår-sikkerhet-ldap, vår-sikkerhet-acl, vår-sikkerhet-cas, vår-sikkerhet-oauth og vår-sikkerhet-openid.

2.5. vår-boot-starter-sikkerhet

Når du arbeider med Spring Boot, vår-boot-starter-sikkerhet starter vil automatisk inkludere alle avhengigheter som vår-sikkerhetskjerne, vår-sikkerhets-web og vår-sikkerhet-config blant andre:

 org.springframework.boot spring-boot-starter-security 2.3.3.RELEASE 

Siden Spring Boot vil administrere alle avhengighetene automatisk for oss, vil dette også bli kvitt vårsikkerhetsproblemet og eldre kjerneavhengighetsproblemer som er nevnt tidligere.

3. Bruke stillbilder og milepæler

Spring Security milepæler, samt øyeblikksbilder, er tilgjengelige i de tilpassede Maven-arkivene som tilbys av Spring. For mer informasjon om hvordan du konfigurerer disse, se hvordan du bruker øyeblikksbilder og milepæler.

4. Konklusjon

I denne raske opplæringen diskuterte vi de praktiske detaljene ved bruk Vårsikkerhet med Maven. Maven-avhengighetene som presenteres her er selvfølgelig noen av de viktigste, og det er flere andre som kan være verdt å nevne og som ennå ikke har gjort kuttet. Likevel bør dette være et godt utgangspunkt for å bruke Spring i et Maven-aktivert prosjekt.


$config[zx-auto] not found$config[zx-overlay] not found