در این بخش به راه اندازی Spring Security در یک پروژه Spring با کمک Maven میپردازیم
آخرین نسخه Spring Security را میتوان در Maven Central Repository مشاهده کرد
اضافه کردن کتابخانه Spring Security را با کمک Maven به پروژه :
<properties> <spring-security.version>5.0.6.RELEASE</spring-security.version> <spring.version>5.0.6.RELEASE</spring.version> </properties> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-core</artifactId> <version>${spring-security.version}</version> </dependency>
اضافه شدن Spring Security Core امکان Authentication و عملیات کنترل دسترسی ها برای اپلیکیشن های غیر وبی و Method Level Security و امنیت برای JDBC را فراهم میکند
توجه کنید که چون پروژه Spring Security بصورت جدا از Spring توسعه داده میشود لذا نسخه خود را دارد و ممکن است با ورژن Spring ای که استفاده میکنید یکسان نباشد و باید به این نکته هم توجه کرد که ورژن ها با هم هماهنگ شده باشند و ورژن قدیمی را برای ورژن جدید استفاده نکنید
Spring Security برای وب :
برای اینکه بتوانیم از Spring Security در وب استفاده کنیم و Filter کردن و کنترل دسترسی به URL در Servlet را فراهم کنیم میبایست کتابخانه مربوط به آنرا اضافه کنیم
این جدا بودن کتابخانه ها به ما اجازه میدهد که به فراخور نیاز پروژه کتابخانه های مورد نیاز را اضافه کنیم و از حجم بیهوده کتابخانه های جلوگیری کنیم
<dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <version>${spring-security.version}</version> </dependency>
همانطور که قبلا اشاره شد ممکن است ورژن وابستگی ها نا هماهنگ باشد و برای رفع آن میتوانیم از متغییر های استفاده کنیم تا هماهنگی بیشتری بین وابستگی ها بوجود آید :
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring-version}</version> </dependency>
برای اینکه از XML namespace مربوط به Spring Security استفاده کنیم spring-security-config را نیاز داریم که اضافه کنیم :
<dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>${spring-security.version}</version> <scope>runtime</scope> </dependency>
و چون از این کتابخانه در هیچ جای دیگری استفاده نمیشود scope آنرا روی runtime ست میکنیم
در انتها برای حمایت از LDAP, ACL, CAS و OpenID در پروژه اسپرینگ اگر نیاز به بخش security آن داشتیم میتوانیم کتابخانه آنها را با نام های spring-security-ldap, spring-security-acl, spring-security-cas and spring-security-openid پیدا کنیم
Spring Security برای خود Maven Repository شخصی ایجاد کرده است که میتوان به milestone و snapshot آنها مراجعه کنیم