Oldindan talablar
Spring Security uchun Java 8 yoki undan yuqori versiyasi talab qilinadi.
Spring Security mustaqil ishlashga intilayotganligi sababli, Java muhitida hech qanday maxsus konfigratsion fayllarni joylashtirishga hojat yo'q. Xususan, Java Authentication and Authorization Service (JAAS) siyosat faylini sozlash yoki Spring Security ni classpath ning umumiy joylarida joylashtirishga hojat yo'q.
Agar siz EJB Container yoki Servlet Container dan foydalansangiz ham, maxsus konfigratsion fayllarni joylashtirish yoki Spring Security ni server klass yuklagichiga kiritishga hojat yo'q. Kerakli barcha fayllar sizning ilovangiz ichida bo'ladi.
Tarkibning bunday qurilishi joylashtirishda maksimal moslashuvchanlikni ta'minlaydi, chunki siz maqsadli artefaktni (JAR, WAR yoki EAR bo'lishidan qat'iy nazar) bir tizimdan boshqasiga ko'chirishingiz mumkin va u darhol ishlay boshlaydi.
Ushbu bo'limda Spring Security ning ikkilik fayllarini olish haqida bilishingiz kerak bo'lgan barcha narsalar tasvirlangan. Manba kodini olish uchun "Manba kodi" bo'limiga qarang.
Chiqarish raqamlari
Spring Security versiyalari MAJOR.MINOR.PATCH tarzida tasniflanadi:
-
MAJOR-versiyalari muhim o'zgarishlarni o'z ichiga olishi mumkin. Odatda, bu zamonaviy xavfsizlik usullari bilan ta'minlash uchun amalga oshiriladi.
-
MINOR-versiyalari yaxshilanishlarni o'z ichiga oladi, lekin passiv yangilanishlar sifatida hisoblanadi
-
PATCH darajasi o'zgarishlar, xatolarni tuzatishlar tashqari, keyingi va oldingi versiyalar bilan ideal tarzda mos bo'lishi kerak.
Maven bilan ishlash
Ko'pgina ochiq manba loyihalari kabi, Spring Security o'z bog'liqliklarini Maven artefaktlari ko'rinishida joylashtiradi. Ushbu bo'limdagi maqolalarda Spring Security ni Maven bilan qanday foydalanish haqida batafsil ma'lumot berilgan.
Maven dan foydalanib Spring Boot
Spring Boot Spring Security bilan bog'liq bog'liqliklarni birlashtiruvchi spring-boot-starter-security boshlovchisini o'z ichiga oladi. Boshlovchini ishlatishning eng oddiy va afzal qilingan usuli – IDE ( Eclipse, IntelliJ, NetBeans) bilan integratsiya orqali Spring Initializr foydalanish yoki start.spring.io orqali.
Bundan tashqari, boshlovchini qo'lda qo'shishingiz mumkin, quyidagi misolda ko'rsatilganidek:
<dependencies>
<!-- ... boshqa bog'liqlik elementlari ... -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>
Spring Boot bog'liqlik versiyalarini boshqarish uchun Maven ning BOM spetsifikatsiyasidan foydalanishni taklif qiladi, shuning uchun versiyani ko'rsatishga hojat yo'q. Agar Spring Security versiyasini o'zgartirish kerak bo'lsa, bunu Maven xususiyatini o'rnatish orqali amalga oshirish mumkin, quyidagi misolda ko'rsatilgan:
<properties>
<!-- ... -->
<spring-security.version>5.7.4</spring-security.version>
</properties>
Spring Security da faqat asosiy chiqarishlarda o'zgarishlar kiritilganligi sababli, Spring Boot bilan Spring Security ning yangi versiyasini ishonch bilan ishlatishingiz mumkin. Ammo, ba'zan Spring Framework versiyasini ham yangilash kerak bo'lishi mumkin. Buni Maven xususiyatini qo'shish orqali amalga oshirish mumkin, quyidagi misolda ko'rsatilgan:
<properties>
<!-- ... -->
<spring.version>5.3.23</spring.version>
</properties>
Agar qo'shimcha funksiyalar (masalan, LDAP, OpenID va boshqalar) dan foydalansangiz, sizga tegishli modullar va loyihaning bog'liqliklarini ham qo'shishingiz kerak bo'ladi.
Spring Boot dan foydalanmasdan Maven
Spring Security ni Spring Boot siz ishlatayotgan bo'lsangiz, loyihaning har bir qismida Spring Security versiyasidan izchil foydalanishni ta'minlaydigan Spring Security ning BOM spetsifikatsiyasidan foydalanish eng yaxshisi bo'ladi. Quyidagi misolda buni qanday qilish ko'rsatilgan:
<dependencyManagement>
<dependencies>
<!-- ... boshqa bog'liqlik elementlari ... -->
<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 uchun Spring Security ning minimal bog'liqlik to'plami odatda quyidagicha ko'rinadi:
<dependencies>
<!-- ... boshqa bog'liqlik elementlari ... -->
<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 freymvorki Spring Framework 5.3.23 asosida yig'iladi, lekin u Spring Framework 5.x har qanday yangilangan versiyasi bilan ishlashi kerak. Ko'pgina foydalanuvchilar Spring Security ning tranzitiv bog'liqliklari Spring Framework 5.3.23 ni echib oladi, bu esa classpath bilan g'alati muammolarni keltirib chiqarishi mumkinligini ko'rishadi. Ushbu muammoni eng oddiy yechimi – sizning pom.xml faylingizning <dependencyManagement> bo'limida spring-framework-bom dan foydalanish, quyidagi misolda ko'rsatilgan:
<dependencyManagement>
<dependencies>
<!-- ... boshqa bog'liqlik elementlari ... -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>5.3.23</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Oldingi misolda Spring Security ning barcha tranzitiv bog'liqliklari Spring 5.3.23 modullarini ishlatishi kafolatlangan.
Maven repositariylari
Hamma ommaga ochiq (ya'ni .RELEASE bilan tugaydigan) chiqarishlar Maven Central da joylashtirilgan, shuning uchun pom-faylida qo'shimcha Maven repositariylarini e'lon qilishga hojat yo'q.
SNAPSHOT-versiyasidan foydalanayotgan bo'lsangiz, Spring ning snapshot-versiyalar repositariysi aniqlanganligiga ishonch hosil qilish kerak, quyidagi misolda ko'rsatilganidek:
<repositories>
<!-- ... boshqa ehtimoliy repositariya elementlari ... -->
<repository>
<id>spring-snapshot</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/snapshot</url>
</repository>
</repositories>
Barqaror yoki oldingi versiyadan foydalanayotgan bo'lsangiz, Spring ning barqaror versiyalar repositariysi aniqlanganligiga ishonch hosil qilish kerak, quyidagi misolda ko'rsatilganidek:
<repositories>
<!-- ... boshqa ehtimoliy repositariya elementlari ... -->
<repository>
<id>spring-milestone</id>
<name>Spring Milestone Repository</name>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>
GO TO FULL VERSION