作者:empty 页数:133 出版社:empty |
web应用达到生产需要就必须有安全控制。java web领域经常提及的两大开源框架主要有两种选择Spring Security和Apache Shiro.所以学习这两种框架也是java开发者提高水平的必经之路。从今天开始连续一段时间内, 研究一下Spring Security.如果想学习的同学可以关注一下公众号:Fe lord cn或者通过https://felord.cn来及时获取相关的干货,2.Spring Security和Apache Shiro相对于Apache Shiro, Spring Security提供了更多的诸如LDAP、D Auth 2.0、ACL、Kerberos、SAML、SSO、OpenID等诸多的安全认证、鉴权协议, 可以按需引用, 对认证/鉴权更加灵活, 粒度更细。可以结合你自己的业务场景进行更加合理的定制化开发, 在最新的Spring Security 5.x中更是提供了响应式应用(reactive application) 提供了安全控制支持。从语言上来讲, 支持使用kot lin、groovy进行开发。
Spring Securty因为是利用了Spng IOC和AOP的特性而无法脱离Sping独立存在.而Apache Shiro可以独立存在.但是Java Web领域Spring可以说是事实上的J2EE规范.使用Java技术栈很少能脱离Spring.也因为功能强大Spring Security被认为非常重, 这是不对的.认真学习之后会发现其实也就是那么回事, 两种框架都是非常优秀的安全框架,根据实际需要做技术选型。如果你要学习这两种安全框架就必须熟悉一下一些相对专业的概念.
3.认证/鉴权这两个概念英文分别为authentication/authorization, 是不是特别容易混淆, 无论你选择Apache Shiro或者Spring Security都需要熟悉这两个概念。其实简单来说认证(authentication) 就是为了证明你是谁, 比如你输入账号密码证明你是用户名为Fe lord cn的用户.而授权(author zation) 是通过认证后的用户所绑定的角色等凭证来证明你可以做什么,打一个现实中的例子,十一长假大家远行都要乘坐交通工具,现在坐车实名制,也就是说你坐车需要两件东西:身份证和车票,身份证是为了证明你确实是你, 这就是authentication; 而车票是为了证明你张三确实买了票可以上车, 这就是authorization.这个例子从另一方面也证明了, 如果只有认证没有授权, 认证就没有意义.如果没有认证,授权就无法赋予真正的可信任的用户,两者是同时存在的.4.过滤器链对于servlet web应用来说, 想要通用的安全控制最好莫过于使用Servlet Filter, 过滤器责任链(关于责任链可以通过https//www.felord.cn/chainpattern.html来了解) 来组成一系列的过滤策略, 不同的条件的请求进入不同的过滤器进行各自的处理逻辑。我们可以对这些Filter进行排列组合以满足我们的实际业务需要.
5.RBAC模型RBAC是基于角色的访问控制(Role-Based AccessControl) 的简称, 在RBAC中, 权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限,这就极大地简化了权限的管理,这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便。当你拥有某个角色以后,你自然继承了该角色的所有功能。对你的一些操作限制不需要直接与你进行沟通, 只需要操作你拥有的角色。比如你在公司既是一个java程序员又是一个前端程序员, 那么你不但要当sql boy还要当页面仔, 如果有一天经理说了前端负责测试工作, 好了你又承担了测试任务。6.其他一些概念比如其它一些常见的安全策略、攻击方式,比如反向代理、网关、壁垒机这种偏运维的知识;CSR F(Cross-site request forgery) 跨站请求伪造, XSS(跨站脚本攻击) 也需要了解一些, 对于一些上面提到的什么O Auth 2.0之类的协议也最好研究一下。当然这些不是必须的,总结本文粗路的简述了Spring Security和Apache Shiro的一些异同, 以及学习它们的一些前置条件.如果你不满足这些条件学习起来可能比较吃力,所以本文的作用是为你学习预热,做一些准备工作,避免新入门的同学陷入迷途,也希望大家多多支持,多多关注码农小胖哥。Spring Security中的用户信息1.前言前一篇介绍了Spring Security入门的基础准备, 从今天开始我们来一步步窥探它是如何工作的, 我们又该如何驾驭它,请多多关注公众号:Fel orden, 本篇将通过Spring Boot 2.x来讲解Sprang Security中的用户主体User Deta1ls, 以及从中找点乐子,2.Spring Boot集成Spring Security这个简直老生常谈了。不过为了照顾大多数还是说一下, 集成Spring Security只需要引入其对应的Starter组件。Spring Security不仅仅能保护Servlet Web应用, 也可以保护ReactiveWeb应用, 本文我们讲前者, 我们只需要在Spring Security项目引入以下依赖即可: