SpringSecurity专题从入门到源码剖析(一) 课程概览

本文是SpringSecurity的入门介绍,详细解释了认证与授权的概念,并通过火车站坐火车的例子进行阐述。文章还对比了Spring Security与Apache Shiro,指出Spring Security在第三方接入和社区支持上的优势,适合需要深入学习Spring Security的读者。
摘要由CSDN通过智能技术生成

第一章. SpringSecurity 概述介绍

视频教程地址:  https://www.bilibili.com/video/BV1kT4y1F7Tc

代码地址:     https://gitee.com/crazyliyang/video-teaching

1. 概述

 

基本上,在所有的开发的系统中,都必须做认证(authentication)和授权(authorization),以保证系统的安全性。生活实际的例子:

  • Authentication   认证
  • Authorization     授权

以坐火车举例子:

  • 认证】 张三去火车站坐火车, 工作人员要求张三出示他的身份证, 这里的身份证是为了证明身份,

                         张三确实是他张三不是别人.   这就是认证.  Authentication

 

  • 授权】 认证完身份后, 工作人员要求,张三出示他的火车票,  这里火车票是张三以坐火车的凭证,

                         张三有了火车票就享有坐火车的权利.  这就是授权 Authorization

所以简单来说:认证解决“你是谁”的问题授权解决“你能做什么”的问题

在 Java 生态中,目前有 Spring SecurityApache Shiro 两个安全框架,可以完成认证和授权的功能。

我们先来学习下 Spring Security 。其官方对自己介绍如下:

FROM 《Spring Security 官网》

Spring Security is a powerful and highly customizable authentication and access-control framework. It is the de-facto standard for securing Spring-based applications.

Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架。它是用于保护基于 Spring 的应用程序。

Spring Security is a framework that focuses on providing both authentication and authorization to Java applications. Like all Spring projects, the real power of Spring Security is found in how easily it can be extended to meet custom requirements

Spring Security 是一个框架,侧重于为 Java 应用程序提供身份验证和授权。与所有 Spring 项目一样,Spring 安全性的真正强大之处,在于它很容易扩展以满足定制需求。

 

2. 更全面的安全概览

 

认证

为了确认用户的身份,防止伪造,在安全要求高的场合,经常会使用组合认证

(或者叫多因素认证),也就是同时使用多个认证方式对用户的身份进行校验。 

授权 

在信息安全领域,授权是指资源所有者委派执行者,赋予执行者指定范围的资源操作权限,以便执行者代理执行对资源的相关操作, 所有者给执行者授予操作资源的权利 

鉴权

鉴权是指对于一个声明者所声明的身份权利,对其所声明的真实性进行鉴别确认的过程。 

权限控制

权限控制是指对可执行的各种操作组合配置为权限列表,然后根据执行者的权限,若其操作在权限范围内,则允许执行,否则禁止 

 

认证,  授权 ,  鉴权  , 权限控制  这四个环节是一个前后依次发生、上下游的关系

认证  –>   授权  –>   鉴权  –>  权限控制

需要说明的是,  这四个环节在有些时候会同时发生。 例如在下面的几个场景:

使用门禁卡开门:  认证、授权、鉴权、权限控制四个环节一气呵成,在瞬间同时发生

用户的网站登录:用户在使用用户名和密码进行登录时,认证和授权两个环节一同完成,

而鉴权和权限控制则发生在后续的请求访问中,比如在选购物品或支付时。

 

认证 和 鉴权 的关系  

这两个概念在很多时候是被混淆最多的概念。被混淆的主要原因,如上文所述,很多时候 认证、授权、鉴权、权限控制  几乎一同发生,以至于被误解为,认证就是鉴权,鉴权就是认证。  其实两者是不一样的概念,两者都有对身份的确认过程,但是两者的主要区别在于;

认证  是确认声明者的本身的身份,其作为授权的上游衔接而存在

鉴权 是对操作(访问)者的身份凭证 进行鉴定解析确认的过程, 注意是体现 "" , 其作为授权的下游衔接而存在

 

温馨提示: 单词长的太像, 记忆小技巧 (描述不一定准确, 但笔者确实记住了 ^_^)

  • Authentication   认证       authentication  机器也可以来识别认证;
  • Authorization     授权,      authorization  单词中 author  一般带有 or  的单词大多是和  “人” 相关

                                                   而授权是需要人来去做这个动作的, 人来授权决定的;

 

 

3. Spring Security VS Apache Shiro 选择问题

 

目前有 Spring Security 和 Apache Shiro 两个安全框架,到底选择哪个呢?

      如果你的项目是公司开发的独立的系统,不需要对接第三方的,

      选择 Spring Security 和 Apache Shiro都可, 相对而言Apache Shiro  上手学习门槛更低.

但如果你们的项目, 需要做第三方接入的.  主要是第三方接入你的系统,访问你系统的资源;

例如: 微信登录, QQ登录,  微博登录, 等等...     这就建议学习选择和学习 Spring Security

Spring Security 的兄弟的项目 Spring-Security-Oauth2  支持了OAuth2协议规范,

是Oauth2的一个实现框架, OAuth2协议是目前解决第三方接入最主流的协议规范,

目前很多大厂均采用该协议, 而Spring生态有这样现成的框架, 我们没有理由不选择它;

需要说明的是:   Spring Security Oauth2  是基于 SpringSecurity 之上而构建的, 依赖于SpringSecurity

所以学习 SpringSecurity 的重要性不言而喻!

也就是说学习使用 Spring-Security-Oauth2 要先学习 SpringSecurity, 这样才能事半功倍.

OAuth2.0 说明    阮大神的 OAuth2.0 说明;  

这里先不拓展, 本专题结束后,  会专题讲解 Spring Security Oauth2

      还是回到SpringSecurity的话题上来, Spring Security 在功能上支持防止CSRF攻击,

      支持表单认证, basic认证,RememberMe,session-fixation protection,等等一些特性

      有很多是开箱即用的功能,  而大多特性都可以通过 配置灵活的变更,这是它的强大之处。

同时Spring Security依托于Spring庞大的社区支持,这点自不必多说。

shiro属于apache社区,因为它的广泛使用,文档也非常的全面。二者从社区支持来看,几乎不相上下。

但是从社区发展的角度看,Spring Security明显更占优势,

随着Spring Boot、Spring Cloud、Spring Social, Spring-Cloud-Alibaba 的长足发展进步,

这种优势会越来越大,  因为Spring Security毕竟是Spring的亲儿子.

Spring Security未来在于Spring系列框架集成的时候一定会有更好的融合性,前瞻性、兼容性!

 

这也是为什么我们要学Spring Security的主要原因!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值