在尝试保护你的应用时,你是否有过挫败感?是否觉得现有的Java安全解决方案难以使用,只会让你更糊涂?本文介绍的Apache Shiro,是一个不同寻常的Java安全框架,为保护应用提供了简单而强大的方法。本文还解释了Apache Shiro的项目目标、架构理念以及如何使用Shiro为应用安全保驾护航。

  什么是Apache Shiro?

  Apache Shiro(发音为“shee-roh”,日语“堡垒(Castle)”的意思)是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可为任何应用提供安全保障 - 从命令行应用、移动应用到大型网络及企业应用。

  Shiro为解决下列问题(我喜欢称它们为应用安全的四要素)提供了保护应用的API:

  •   认证 - 用户身份识别,常被称为用户“登录”;
  •   授权 - 访问控制;
  •   密码加密 - 保护或隐藏数据防止被偷窥;
  •   会话管理 - 每用户相关的时间敏感的状态。

  Shiro还支持一些辅助特性,如Web应用安全、单元测试和多线程,它们的存在强化了上面提到的四个要素。

  为何要创建Apache Shiro?

  对于一个框架来讲,使其有存在价值的最好例证就是有让你去用它的原因,它应该能完成一些别人无法做到的事情。要理解这一点,需要了解Shiro的历史以及创建它时的其他替代方法。

  在2008年加入Apache软件基金会之前,Shiro已经5岁了,之前它被称为JSecurity项目,始于2003年初。当时,对于Java应用开发人员而言,没有太多的通用安全替代方案 - 我们被Java认证/授权服务(或称为JAAS)紧紧套牢了。JAAS有太多的缺点 - 尽管它的认证功能尚可忍受,但授权方面却显得拙劣,用起来令人沮丧。此外,JAAS跟虚拟机层面的安全问题关系非常紧密,如判断JVM中是否允许装入一个类。作为应用开发者,我更关心应用最终用户能做什么,而不是我的代码在JVM中能做什么。

  由于当时正从事应用开发,我也需要一个干净、容器无关的会话机制。在当时,“这场游戏”中唯一可用的会话是HttpSessions,它需要Web容器;或是EJB 2.1里的有状态会话Bean,这又要EJB容器。而我想要的一个与容器脱钩、可用于任何我选择的环境中的会话。

  最后就是加密问题。有时,我们需要保证数据安全,但是Java密码架构(Java Cryptography Architecture)让人难以理解,除非你是密码学专家。API里到处都是Checked Exception,用起来很麻烦。我需要一个干净、开箱即用的解决方案,可以在需要时方便地对数据加密/解密。

  于是,纵观2003年初的安全状况,你会很快意识到还没有一个大一统的框架满足所有上述需求。有鉴于此,JSecurity(即之后的Apache Shiro)诞生了。

分布式平台下的HS(High-Security) --Apache Shiro API(介绍)相关推荐

  1. 分布式平台下的HS(High-Security) --Shiro 授权

    授 权 授权实质上就是访问控制 - 控制用户能够访问应用中的哪些内容,比如资源.Web页面等等.多数用户执行访问控制是通过使用诸如角色和权限这类概念完成的.也就是说,通常用户允许或不允许做的事情是根据 ...

  2. 分布式平台下的HS(High-Security) --对称加密

        对称加密  MD5或者说HASH值是一种不可逆的算法.如果需要从密文还原成明文,那么就需要对称和非对称这两类可逆算法. 首先,简单介绍下这两类算法.图9-1是对称算法的示意图: 图1-1 对称 ...

  3. Apache shiro集群实现 (六)分布式集群系统下的高可用session解决方案---Session共享

    Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...

  4. BEA WebLogic平台下J2EE调优攻略--转载

    BEA WebLogic平台下J2EE调优攻略   2008-06-25 作者:周海根 出处:网络   前 言 随着近来J2EE软件广泛地应用于各行各业,系统调优也越来越引起软件开发者和应用服务器提供 ...

  5. Dotnet全平台下APM-Trace探索

    随着支撑的内部业务系统越来越多,向着服务化架构进化,在整个迭代过程中,会逐渐暴露出以下问题. 传统依赖于应用服务器日志等手段的排除故障原因的复杂度越来越高,传统的监控服务已经无法满足需求. 终端--& ...

  6. jboss jta mysql_JBoss平台下JTA与JMS实验软件架构8

    1 JTA 简介: Java Transaction API,JTA Transaction 是指由J2EE Transaction manager 去管理的 事务.通过调用UserTransacti ...

  7. NET平台下Web树形结构程序设计

    .NET平台下Web树形结构程序设计 李洪根 我的上篇文章<树形结构在开发中的应用>主要是在Windows Form下的实现,下面讲一下Web Form下的实现. 概述 TreeView是 ...

  8. .NET平台下WEB应用程序的部署(安装数据库和自动配置)

    .NET平台下WEB应用程序的部署(安装数据库和自动配置)   李洪根 在.NET平台下,部署 Web 解决方案是比较方便的.我们可以利用Visual Studio.NET 2003添加一个WEB安装 ...

  9. .NET平台下Web树形结构程序设计

    .NET平台下Web树形结构程序设计 我的上篇文章<树形结构在开发中的应用>主要是在Windows Form下的实现,下面是Web Form下的实现. 数据库设计 首先,我们在SQL SE ...

最新文章

  1. Redis键命令(查找键、判断键值是否存在、查看键值类型、删除键值、设置过期时间、查看键值有效时间)
  2. 都爱云支付首页模板(上传即可使用)
  3. awx文件_如何在Minishift上运行AWX
  4. Spring-jdbc-JdbcTemplate
  5. ctf题目:看不见的flag_记一次江西省信息安全线下CTF比赛
  6. mybatis 业务逻辑
  7. Linux的常用网络命令
  8. 【NLP】XLNet详解
  9. python--mysql创建数据库
  10. Windows 7 登录界面背景图片定制
  11. php泛目录站群系统,php泛目录站群
  12. 携程网被黑,谁干的??
  13. Stata学习手册——第一讲
  14. 预训练权重到底是个啥
  15. Cocos合成大西瓜案例-下
  16. 卡耐基梅隆大学计算机熬夜,美国25所著名大学学生平均作息时间表 原来留学生的日子也不好过!...
  17. 微信登陆无法拉起授权界面
  18. CPU load高但CPU usage低问题排查
  19. 【计算机网络系列】网络概述与体系结构
  20. springboot集成Lean Cloud 及时通讯

热门文章

  1. Visual SourceSafe简明培训教程
  2. 按下回车表示确定提交
  3. C语言编程技巧-signal(信号机制)
  4. 设置Enter键为默认键
  5. Linux环境编译安装Mysql以及补装innodb引擎方法
  6. Linux进程编程基础介绍
  7. 为什么博图中放置按下按钮无反应_如何更好的设计按钮
  8. es父子结构查询_ES 父子文档查询
  9. Spring复习笔记:4
  10. Java项目:控制台商城系统(java+打印控制台)