کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

Security با دستورات Java در Spring

مثال Java Spring Security

پروژه Spring Security با استفاده از پیکربندی Java

فریمورک Spring پشتیبانی از پیکربندی جاوا را در Spring 3.1 اضافه کرد. در Spring Security، پیکربندی جاوا به به بحث Security در Spring 3.2 اضافه شد که این امکان را به ما داد تا Spring Security را بدون نوشتن حتی یک خط xml پیکربندی کنیم.

در اینجا مثالی ایجاد میکنیم که Spring Security را پیاده سازی می کند و بدون استفاده از xml پیکربندی می کند. این مثال مراحل زیر را شامل می شود.


مرحله 1

مرحله اول ایجاد Spring Security با پیکربندی جاوا است. یک پیکربندی جاوا اولیه ساده در زیر داده شده است.

WebSecurityConfig.java

package com.javatpoint;  
  
import org.springframework.context.annotation.*;  
//import org.springframework.security.config.annotation.authentication.builders.*;  
import org.springframework.security.config.annotation.web.builders.HttpSecurity;  
import org.springframework.security.config.annotation.web.configuration.*;  
import org.springframework.security.core.userdetails.User;  
import org.springframework.security.core.userdetails.UserDetailsService;  
import org.springframework.security.provisioning.InMemoryUserDetailsManager;  
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;  
  
@EnableWebSecurity  
@ComponentScan("com.javatpoint")  
public class WebSecurityConfig implements WebMvcConfigurer {  
      
    @Bean  
    public UserDetailsService userDetailsService() throws Exception {  
        InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();  
        manager.createUser(User.withDefaultPasswordEncoder().username("javatpoint").  
        password("java123").roles("USER").build());  
        return manager;  
    }  
      
    protected void configure(HttpSecurity http) throws Exception {  
                  
        http  
        .antMatcher("/")                                 
        .authorizeRequests()  
            .anyRequest().hasRole("ADMIN")  
            .and()  
        .httpBasic();  
    }  
}  

این پیکربندی یک فیلتر servlet (Servlet Filter) شناخته شده با عنوان springSecurityFilterChain ایجاد می کند و وظایف آن عبارتند از : محافظت از URL های برنامه، اعتبار سنجی نام کاربری و کلمه عبور فرستاده شده، ارجاع به فرم ورود و غیره.

پیکربندی جاوا ارائه شده در بالا، اقدامات زیر را برای برنامه ما انجام می دهد :

  • احراز هویت مورد نیاز برای هر URL
  • ایجاد فرم ورود
  • امکان احراز هویت کاربر با استفاده از احراز هویت مبتنی بر فرم
  • امکان خروج
  • جلوگیری از حمله CSRF
  • ادغام Header در Security (Security Header Integration) و غیره

مرحله 2

حال، springSecurityFilterChain را با war ثبت می کنیم. Spring Security برای ثبت یک کلاس پایه ،AbstractSecurityWebApplicationInitializer را ارائه می دهد که نیاز به توسعه آن داریم. برای برنامه های کاربردی MVC Spring، SecurityWebApplicationInitializer به صورت زیر است.

SecurityWebApplicationInitializer.java

package com.javatpoint;  
import org.springframework.security.web.context.*;  
  
public class SecurityWebApplicationInitializer  
    extends AbstractSecurityWebApplicationInitializer {  
  
}  

این کد springSecurityFilterChain را برای همه URL های برنامه ما ثبت می کند.

مرحله 3

حال، WebSecurityConfig را در ApplicationInitializer موجود بارگذاری کنید و به متد getRootConfigClasses() اضافه کنید.

MvcWebApplicationInitializer.java

package com.javatpoint;  
  
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;  
public class MvcWebApplicationInitializer extends  
        AbstractAnnotationConfigDispatcherServletInitializer {  
    @Override  
    protected Class[] getRootConfigClasses() {  
        return new Class[] { WebSecurityConfig.class };  
    }  
    @Override  
    protected Class[] getServletConfigClasses() {  
        // TODO Auto-generated method stub  
        return null;  
    }  
    @Override  
    protected String[] getServletMappings() {  
        return new String[] { "/" };  
    }  
}  

مرحله 4

کلاس WebSecurityConfigurerAdapter یک متد پیکربندی (HttpSecurity http) ارائه می کند که پیکربندی پیش فرض زیر را دربردارد. تعریف پیش فرض به صورت زیر است.

protected void configure(HttpSecurity http) throws Exception {  
http  
.authorizeRequests()  
.anyRequest().authenticated()  
.and()  
.formLogin()  
.and()  
.httpBasic();  
}   

مشابه XML داده شده است.

< http>  
< intercept-url pattern="/**" access="authenticated" />
  
< form-login />
  
< http-basic />
  
< /http>  

این متد اقدامات زیر را انجام می دهد :

  • این تضمین را می دهد که با هر درخواست ایجاد شده توسط کاربر، کاربر را ملزم به احراز هویت کند.
  • این امکان را به کاربر می دهد که با استفاده از ورود مبتنی بر فرم، احراز هویت کند.
  • این امکان را به کاربر می دهد که با احراز هویت پایه http احراز هویت کند.

مرحله 5

ایجاد یک کنترلر برای مدیریت درخواست های کاربر.

HomeController.java

package com.javatpoint.controller;  
import org.springframework.stereotype.Controller;  
import org.springframework.web.bind.annotation.RequestMapping;  
import org.springframework.web.bind.annotation.RequestMethod;  
@Controller  
public class HomeController {  
      
    @RequestMapping(value="/", method=RequestMethod.GET)  
    public String index() {  
          
        return "index";  
    }  
}  

یک صفحه منظر (view page) به نام index.jsp داریم که دربردارنده سورس کد زیر است.

< html>  
< head>  
< meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  
< title>Home Page< /title>  
< /head>  
< body>  
Welcome to home page!  
< /body>  
< /html>  

پروژه تکمیل شده به شکل زیر خواهد بود.

Spring Security Java Example

خروجی :

ما یک عمل در کنترلر داریم که تنها توسط کاربر معتبر قابل دسترسی است. بنابراین، وقتی برنامه را اجرا کنیم، برای مدارک ورود درخواست می دهد. خروجی به صورت زیر است.

Spring Security Java Example 1

این صفحه ورود پیش فرض ارائه شده توسط Spring Security است، ما آن را ایجاد نکرده ایم. اگرچه می توانیم صفحه ورود خود را ایجاد کنیم و با برنامه ترکیب کنیم. در مباحث بعدی این کار را خواهیم کرد. حال، مدارک ورود برای ورود به منابع برنامه را ارائه کنید. Spring Securityمدارک کاربر را اعتبار سنجی می کند و از اعتبار کاربر اطمینان حاصل می کند.


ببینیم اگر اطلاعات غلط وارد کنیم چه اتفاقی می افتد.

Spring Security Java Example 2

پس از انتخاب گزینه login پیام خطای اطلاعات اشتباه (Bad Credentials) را می دهد.

Spring Security Java Example 3

حال با اطلاعات صحیح وارد شوید.

Spring Security Java Example 4

این بار اطلاعات مطابقت دارد و صفحه خانه (home page) نمایش داده می شود (index.jsp).

Spring Security Java Example 5
1399/01/31 2518 428
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...