序言大家好,我是老马 。
前面我们学习了 5 分钟入门 shiro 安全框架实战笔记,让大家对 shiro 有了一个最基本的认识 。
shiro 还有其他优秀的特性,今天我们就一起来学习一下,为后续深入学习奠定基础 。
Apache Shiro 是什么?Apache Shiro 是一种功能强大且易于使用的JAVA安全框架,它执行身份验证,授权,加密和会话管理,可用于保护任何应用程序的安全-从命令行应用程序,移动应用程序到最大的Web和企业应用程序 。
shiro 的组件结构如下图:
文章插图
components
Shiro提供了应用程序安全性API来执行以下方面(我喜欢将它们称为应用程序安全性的4个基石):
- 身份验证-证明用户身份,通常称为用户“登录” 。
- 授权-访问控制
- 密码学-保护或隐藏数据以防窥视
- 会话管理-每个用户的时间敏感状态
特性您可以使用Apache Shiro进行以下操作:
- 验证用户身份以验证其身份
- 对用户执行访问控制,例如:
- 确定是否为用户分配了特定的安全角色
- 确定是否允许用户做某事
- 即使在没有Web或EJB容器的情况下,也可以在任何环境中使用Session API 。
- 在身份验证,访问控制或会话的生存期内对事件做出反应 。
- 汇总1个或更多用户安全数据的数据源,并将其全部显示为单个复合用户“视图” 。
- 启用单点登录(SSO)功能
- 启用“记住我”服务以进行用户关联,而无需登录
Apache Shiro 优势如下:
- 易于使用-易于使用是该项目的最终目标 。应用程序安全性可能非常令人困惑和沮丧,并被视为“必不可少的恶魔” 。如果您使它易于使用,以使新手程序员可以开始使用它,那么就不必再痛苦了 。
- 全面-没有任何其他安全框架具有Apache Shiro所声称的范围广度,因此它很可能是满足您的安全需求的“一站式服务” 。
- 灵活-Apache Shiro可以在任何应用程序环境中工作 。虽然它可以在Web,EJB和IoC环境中运行,但不需要它们 。Shiro也不要求任何规范,甚至没有很多依赖性 。
- 具有Web功能-Apache Shiro具有出色的Web应用程序支持,可让您基于应用程序URL和Web协议(例如REST)创建灵活的安全策略,同时还提供了一组JSP库来控制页面输出 。
- 可插拔-Shiro简洁的API和设计模式可轻松与许多其他框架和应用程序集成 。您会看到Shiro与Spring,Grails,Wicket,Tapestry,Mule,Apache Camel,Vaadin等框架无缝集成 。
- 受支持-Apache Shiro是Apache Software Foundation的一部分,该组织被证明以其社区的最大利益行事 。项目开发和用户群体友好的公民随时可以提供帮助 。如果需要,像Katasoft这样的商业公司也可以提供专业的支持和服务 。
文章插图
概念
Subject在保护应用程序安全时,可能要问自己最相关的问题是:“当前用户是谁?”或“是否允许当前用户执行X”?
在编写代码或设计用户界面时,我们通常会问自己以下问题:应用程序通常是基于用户案例构建的,并且您希望基于每个用户来表示(和保护)功能 。
因此,我们考虑应用程序安全性的最自然方法是基于当前用户 。
Shiro的API从根本上代表了这种思维方式 。
“主题”一词是一个安全术语,基本上表示“当前正在执行的用户” 。它只是不被称为“用户”,因为“用户”一词通常与人类相关联 。
在安全领域中,“主题”一词可以表示一个人,但也可以指第三方进程,守护程序帐户或任何类似内容 。它仅表示“当前正在与软件交互的事物” 。
不过,对于大多数意图和目的,您都可以将其视为Shiro的“用户”概念 。
您可以在代码中的任何位置轻松获取Shiro主题,如下面的清单1所示 。
- List1
import org.apache.shiro.subject.Subject;import org.apache.shiro.SecurityUtils;...Subject currentUser = SecurityUtils.getSubject();
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 什么是2021年最佳的后端开发框架
- Shiro框架详解
- 食品安全|购买150份扣肉的职业打假人,真的一无是处吗?
- 用 C# 实现一个简单的日志框架
- 提高微服务安全性的11个方法
- 物业安全管理影响因素和发展要点
- 宝宝没有安全感怎么办?
- 使用 gosec 检查 Go 代码中的安全问题
- 探索3种顶级「集成框架」Apache、Spring和Mule
- 基于阿里Ant Design构建的高颜值开源管理后台UI框架