失效链接处理 |
Spring Security 实战干货 PDF 下载
本站整理下载:
相关截图:
主要内容:
web应用达到生产需要就必须有安全控制。java web领域经常提及的两大开源框架主要有两种选择
Spring Security和Apache Shiro 。所以学习这两种框架也是java开发者提高水平的必经之路。从今天开始
连续一段时间内,研究一下Spring Security。如果想学习的同学可以关注一下公众号: Felordcn 或者
通过 https://felord.cn 来及时获取相关的干货。
2. Spring Security 和Apache Shiro
相对于Apache Shiro,Spring Security提供了更多的诸如 LDAP 、 OAuth2.0 、 ACL 、 Kerberos 、
SAML 、 SSO 、 OpenID 等诸多的安全认证、鉴权协议,可以按需引用。对认证/鉴权更加灵活,粒度更
细。可以结合你自己的业务场景进行更加合理的定制化开发。在最新的Spring Security 5.x中更是提供了
响应式应用(reactive application)提供了安全控制支持。从语言上来讲,支持使用kotlin、groovy进行开
发。
Spring Security因为是利用了Spring IOC 和AOP的特性而无法脱离Spring独立存在。而Apache Shiro可以独
立存在。但是Java Web领域Spring可以说是事实上的J2EE规范。使用Java技术栈很少能脱离Spring。也因
为功能强大Spring Security被认为非常重,这是不对的。认真学习之后会发现其实也就是那么回事。两种
框架都是非常优秀的安全框架,根据实际需要做技术选型。如果你要学习这两种安全框架就必须熟悉一
下一些相对专业的概念。
3. 认证/鉴权
这两个概念英文分别为 authentication / authorization 。是不是特别容易混淆。无论你选择
Apache Shiro 或者 Spring Security 都需要熟悉这两个概念。其实简单来说认证(authentication)就是为
了证明 你是谁 ,比如你输入账号密码证明你是用户名为 Felordcn 的用户。而授权(authorization)是
通过认证后的用户所绑定的角色等凭证来证明 你可以做什么 。打一个现实中的例子。十一长假大家远行
都要乘坐交通工具,现在坐车实名制,也就是说你坐车需要两件东西: 身份证 和 车票 。身份证是为了
证明你确实是你,这就是 authentication ;而车票是为了证明你张三确实买了票可以上车,这就是
authorization 。这个例子从另一方面也证明了。如果只有认证没有授权,认证就没有意义。如果没
有认证,授权就无法赋予真正的可信任的用户。两者是同时存在的。
4. 过滤器链
对于servlet web应用来说,想要通用的安全控制最好莫过于使用 Servlet Filter 。 过滤器责任链
(关于责任链可以通过https://www.felord.cn/chainpattern.html 来了解)来组成一系列的过滤策略,不
同的条件的请求进入不同的过滤器进行各自的处理逻辑。我们可以对这些 Filter 进行排列组合以满足
我们的实际业务需要。
5. RBAC模型
RBAC 是基于角色的访问控制(Role-Based Access Control )的简称。在 RBAC 中,权限与角色相关联,
用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。这样管理都是层
级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便。当
你拥有某个角色以后,你自然继承了该角色的所有功能。对你的一些操作限制不需要直接与你进行沟
通,只需要操作你拥有的角色。比如你在公司既是一个java程序员又是一个前端程序员,那么你不但要
当sqlboy还要当页面仔。如果有一天经理说了前端负责测试工作,好了你又承担了测试任务。
|