SpringBoot 整合 Security笔记一、基本概念 详解

 

一、Spring Security 是基于Spring AOP 和 Servlet过滤器的安全框架。它提供全麦你的安全性解决方案,
同时在Web请求级和方法调用级处理身份确认和授权。

Spring Security 核心功能
1)认证(用户/设备/系统)

2)验证(权限控制/授权,允许执行的操作)

3)攻击防护(防止伪造身份)

Filter Servlet Spring DI Spring AOP

二、目前常用的安全框架主要是Spring Security 和 Apache Shiro
1、相同点:
1)认证功能
2)授权功能
3)加密功能
4)会话功能
5)缓存支持
6)remeberMe功能

2、优点:
1)Spring Security 基于Spring开发,项目中如果使用Spring作为基础,配合Spring Security 做权限更加方便
。Shiro 需要和Spring进行整合。

2)Spring Security 功能比Shiro更加丰富些,比如安全防护

3)Spring Security 社区资源相对比Shiro 更加丰富

4)如果使用的是Springboot SpringCloud可以无缝隙集成

3、缺点
1)shiro 配置和使用比较简单,Spring Security 上手复杂些。

2)Shiro 依赖性低,不需要任何框架和容器,可以独立运行,而Spring Security依赖Spring容器

三、基于内存的认证信息(内存中配置认证信息,配置多个账号信息)
1、编码思路:
1)重写WebSecurityConfigAdapter类中的config方法
config(AuthenticationManagerBuilder auth)
2) 通过auth对象的inMemoryAuthentication()方法指定认证信息
3)auth.inMemoryAuthentication().withUser("admin").password("123456")

2、指定加密
1)方式一 直接在配置类中指定

2)方式二 通过@Bean注入指定PasswordEncoder  加入之后需要修改Configure的密码加密
@Bean
public PasswordEncoder passwordEncoder() {
    return new BCryptPasswordEncoder();
}

四、基于内存角色授权
1、比如管理员和普通用户角色,对于不同的角色,那么允许访问的方法会不一样。
2、如何开启方法级别安全控制
@Configuration注解的类上在添加
@EnableGlobalMethodSecurity注解即可。
3、如何配置方法级别的权限控制
使用@PreAuthorize("hasAnyRole(admin)")即可指定访问级别的角色。
4、通过AuthenticationBuilder的roles()方法,就可以指定角色。
auth.inMemoryAuthentication()
            .withUser("admin")
            .password(passwordEncoder().encode("123456"))
            .roles("beijingAdmin", "shanghaiAdmin");

五、基于内存数据库的身份认证和角色授权
1、hsqldb内存数据库
2、mysql数据库(本人基于mysql操作的)



六、加密算法
1、Bcrypt: 是一种跨平台的文件加密工具。bcrypt使用的是布鲁斯·施内尔在1993年发布的Blowfish加密算法。由它加密的文件
可在所有支持的操作系统和处理器上进行转移。它的口令必须是(8-56)个字符,并将在内部转化为448位的密钥。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值