Алдын ала шарттар
Spring Security қолдану үшін Java 8 немесе одан жоғары нұсқасы керек.
Spring Security куәліктері өздігінен жұмыс істеуге бағытталғандықтан, сізге Java ортада арнайы конфигурациялық файлдарды орналастыру қажет емес. Атап айтқанда, сізге Java Authentication and Authorization Service (JAAS) арнайы саясат файлын баптаудың қажеті жоқ немесе Spring Security-ді жалпы classpath орындарына орналастырудың қажеті жоқ.
Сол сияқты, егер сіз EJB контейнерін немесе Servlet контейнерін қолдансаңыз, арнайы конфигурациялық файлдарды ешқайда орналастырудың қажеті жоқ немесе Spring Security-ді сервердің класстарды жүктеуішіне қосудың қажеті жоқ. Барлық қажетті файлдар сіздің қосымшаңыз ішінде болады.
Мұндай құрылым максималды икемділікті қамтамасыз етеді, өйткені мақсатты артефактты (JAR, WAR немесе EAR болсын) бір жүйеден екіншісіне көшіруге болады, және ол бірден жұмыс істей бастайды.
Бұл бөлімде Spring Security-дің бинарлық файлдарын алу үшін барлығын білу керек. Көзі кодын алу үшін, "Көзі коды" бөліміне кіріңіз.
Босатулар нөмірлеуі
Spring Security нұсқалары MAJOR.MINOR.PATCH ретінде жіктеледі:
-
MAJOR-нұсқаларында маңызды өзгерістер болуы мүмкін. Әдетте, бұл қауіпсіздікті осы заманғы қорғаныс әдістеріне сәйкес арттыру үшін жасалады.
-
MINOR-нұсқаларында жақсартулар болады, бірақ олар пассивті жаңартулар болып табылады
-
PATCH деңгейі кез келген кейінгі және алдыңғы нұсқалармен толық үйлесімді болуы керек, қателерді түзету өзгерістерінен басқа.
Maven-пен қолдану
Көпшілік ашық кодты жобалар сияқты, Spring Security де өз тәуелділіктерін Maven артефакты ретінде жаяды. Бұл бөлімдегі мақалаларда Spring Security-ді Maven-пен бірге қалай қолдану керектігі егжей-тегжейлі сипатталған.
Maven-пен Spring Boot қолдану
Spring Boot spring-boot-starter-security
стартерін қамтиды, ол Spring Security-мен байланысты тәуелділіктерді біріктіреді. Стартерді қолданудың ең оңай және артықшылыты тәсілі - Spring Initializr-ді IDE-мен интеграция арқылы (Eclipse, IntelliJ, NetBeans) немесе start.spring.io арқылы қолдану болып табылады.
Сонымен қатар, стартерді қолмен қосуға болады, келесі мысалда көрсетілгендей:
<dependencies>
<!-- ... басқа тәуелділік элементтері ... -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>
Spring Boot тәуелділіктердің нұсқаларын басқару үшін Maven-нің BOM спецификациясын қолданғандықтан, нұсқаны көрсету қажет емес. Егер 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-ты қолданбай жұмыс істеген жағдайда, Spring Security үшін BOM спецификациясын қолдану дұрыс шешім болып табылады, ол бүкіл жобада Spring Security-нұсқасын біртұтас қолдануды қамтамасыз етеді. Келесі мысалда мұны қалай жасау керектігі көрсетілген:
<dependencyManagement>
<dependencies>
<!-- ... басқа тәуелділік элементтері ... -->
<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>
Maven үшін Spring Security-дің минималды тәуелділіктер жиынтығы әдетте келесідей көрінеді:
<dependencies>
<!-- ... басқа тәуелділік элементтері ... -->
<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>
бөлімінде қолдану, келесі мысалда көрсетілгендей:
<dependencyManagement>
<dependencies>
<!-- ... басқа тәуелділік элементтері ... -->
<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>
GO TO FULL VERSION