Forårssikkerhed med Maven

1. Oversigt

I denne artikel forklarer vi, hvordan du opsætter Forårssikkerhed med Maven og gå gennem specifikke brugstilfælde ved brug af Spring Security-afhængigheder. Du kan finde de seneste Spring Security-udgivelser på Maven Central.

Dette er en opfølgning på den forrige artikel med Spring med Maven, så for Spring-afhængigheder, der ikke er sikkerhed, er det stedet at starte.

2. Forårssikkerhed med Maven

2.1. fjeder-sikkerhed-kerne

Core Spring Security support - fjeder-sikkerhed-kerne - indeholder godkendelses- og adgangskontrolfunktionalitet. Denne afhængighed er obligatorisk at medtage for alle projekter, der bruger Spring Security.

Derudover fjeder-sikkerhed-kerne understøtter enkeltstående (ikke-web) applikationer, metodeniveau sikkerhed og JDBC:

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

Noter det Spring og Spring Security er på forskellige udgivelsesplaner, så der er ikke altid 1: 1-match mellem versionsnumrene.

Hvis du arbejder med ældre versioner af Spring - er det også meget vigtigt at forstå, at Spring Security 4.1.x afhænger ikke af Spring 4.1.x-udgivelser! For eksempel, da Spring Security 4.1.0 blev frigivet, var Spring core framework allerede på 4.2.x og inkluderer derfor den version som dens kompilitetsafhængighed. Planen er at justere disse afhængigheder nærmere i fremtidige udgivelser - se denne JIRA for flere detaljer - men for øjeblikket har dette praktiske implikationer, som vi vil se på næste.

2.2. fjeder-sikkerhed-web

At tilføje Web support til Spring Security, vi har brug for fjeder-sikkerhed-web afhængighed:

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

Dette indeholder filtre og relateret websikkerhedsinfrastruktur, der muliggør URL-adgangskontrol i et Servlet-miljø.

2.3. Forårssikkerhed og ældre forårskerneafhængighedsproblem

Denne nye afhængighed udviser også et problem for Maven-afhængighedsgrafen. Som nævnt ovenfor afhænger Spring Security-krukker ikke af de nyeste Spring core-krukker (men af ​​den tidligere version). Dette kan føre til disse ældre afhængigheder gør vej på toppen af ​​klassestien i stedet for de nyere 5.x forårartefakter.

For at forstå hvorfor dette sker, er vi nødt til at se på hvordan Maven løser konflikter. I tilfælde af en versionskonflikt vælger Maven krukken, der er tættest på træets rod. For eksempel, fjederkerne er defineret af begge forår-orm (med 5.0.0.FRIGØRE version) men også af fjeder-sikkerhed-kerne (med 5.0.2.FRIGIVELSE version). Så i begge tilfælde forår-jdbc er defineret i en dybde på 1 fra root pom af vores projekt. På grund af det betyder det faktisk noget i hvilken rækkefølge forår-orm og fjeder-sikkerhed-kerne er defineret i vores egen pom. Den første prioriteres så vi kan ende med begge versioner på vores klassesti.

For at løse dette problem skal vi definere eksplicit nogle af forårets afhængigheder i vores egen pom og ikke stole på den implicitte Maven afhængighedsopløsningsmekanisme. Hvis du gør dette, placeres den pågældende afhængighed på dybde 0 fra vores pom (som den er defineret i selve pom), så det får prioritet. Alt det følgende falder i samme kategori, og alle skal defineres eksplicit, enten direkte eller for multimodulprojekter i afhængighedLedelse element af forælderen:

 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. spring-security-config og andre

For at bruge det rige Spring Security XML-navneområde og annoteringer har vi brug for spring-security-config afhængighed:

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

Endelig har LDAP, ACL, CAS, OAuth og OpenID support deres egne afhængigheder i Spring Security: spring-security-ldap, fjeder-sikkerhed-acl, fjeder-sikkerhed-cas, fjeder-sikkerhed-oauth og fjeder-sikkerhed-openid.

2.5. spring-boot-starter-sikkerhed

Når du arbejder med Spring Boot, spring-boot-starter-sikkerhed starter vil automatisk omfatte alle afhængigheder såsom fjeder-sikkerhed-kerne, fjeder-sikkerhed-web og spring-security-config blandt andre:

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

Da Spring Boot automatisk administrerer alle afhængigheder for os, vil dette også slippe af med det tidligere nævnte forårssikkerheds- og ældre kerneafhængighedsproblem.

3. Brug af snapshots og milepæle

Forårssikkerhedsmilepæle såvel som snapshots er tilgængelige i de brugerdefinerede Maven-arkiver, der leveres af Spring. For yderligere oplysninger om, hvordan du konfigurerer disse, se hvordan du bruger snapshots og milepæle.

4. Konklusion

I denne hurtige vejledning diskuterede vi de praktiske detaljer ved brug Forårssikkerhed med Maven. De Maven-afhængigheder, der præsenteres her, er selvfølgelig nogle af de største, og der er flere andre, der kan være værd at nævne og endnu ikke har gjort det. Ikke desto mindre bør dette være et godt udgangspunkt for at bruge Spring i et Maven-aktiveret projekt.


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