Spring Security

Spring Security 简介

Spring Security 是一个能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案的安全框架(对访问权限进行控制)。应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分。用户认证指的是验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户认证一般要求用户提供用户名和密码。

系统通过校验用户名和密码来完成认证过程。用户授权指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而有的用户可以进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。   spring security的主要核心功能为 认证和授权,所有的架构也是基于这两个核心功能去实现的。

它提供了一组可以在 Spring 应用上下文中配置的 Bean,充分利用了Spring IoC,DI(控制反转 Inversion of Control ,DI:Dependency Injection 依赖注入)和 AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控
制编写大量重复代码的工作。

应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分。

框架原理

众所周知 想要对对Web资源进行保护,最好的办法莫过于Filter,要想对方法调用进行保护,最好的办法莫过于AOP。所以springSecurity在我们进行用户认证以及授予权限的时候,通过各种各样的拦截器来控制权限的访问,从而实现安全。
        如下为其主要过滤器  

        WebAsyncManagerIntegrationFilter 
        SecurityContextPersistenceFilter 
        HeaderWriterFilter 
        CorsFilter 
        LogoutFilter
        RequestCacheAwareFilter
        SecurityContextHolderAwareRequestFilter
        AnonymousAuthenticationFilter
        SessionManagementFilter
        ExceptionTranslationFilter
        FilterSecurityInterceptor
        UsernamePasswordAuthenticationFilter
        BasicAuthenticationFilter

框架的核心组件

        SecurityContextHolder:提供对SecurityContext的访问
        SecurityContext,:持有Authentication对象和其他可能需要的信息
        AuthenticationManager 其中可以包含多个AuthenticationProvider
        ProviderManager对象为AuthenticationManager接口的实现类
        AuthenticationProvider 主要用来进行认证操作的类 调用其中的authenticate()方法去进行认证操作
        Authentication:Spring Security方式的认证主体
        GrantedAuthority:对认证主题的应用层面的授权,含当前用户的权限信息,通常使用角色表示
        UserDetails:构建Authentication对象必须的信息,可以自定义,可能需要访问DB得到
        UserDetailsService:通过username构建UserDetails对象,通过loadUserByUsername根据userName获取UserDetail对象 (可以在这里基于自身业务进行自定义的实现  如通过数据库,xml,缓存获取等)           

 

 

1.引入依赖(pom.xml)(引入依赖在spring依赖引入的基础上,引入spring Security依赖,版本可以使用spring的版本)
<dependency>
   <groupId>com.imooc.security</groupId>
   <artifactId>imooc-security-browser</artifactId>
   <version>1.0.0-SNAPSHOT</version>
</dependency>
2.配置系统(参见 application-example.properties)

3.增加UserDetailsService接口实现

4.如果需要记住我功能,需要创建数据库表(参见 db.sql)

5.如果需要社交登录功能,需要以下额外的步骤
1).配置appId和appSecret
2).创建并配置用户注册页面,并实现注册服务(需要配置访问权限),注意在服务中要调用ProviderSignInUtils的doPostSignUp方法。
3).添加SocialUserDetailsService接口实现
4).创建社交登录用的表 (参见 db.sql)

参考链接:

 

附录链接

项目视频地址:https://www.bilibili.com/video/BV11t411h7xS?p=56

项目地址:https://github.com/Mr-zhango/imooc-SpringSecurity

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值