分布式平台下的HS(HighSecurity) Apache Shiro API(介绍)

在尝试保护你的应用时,你是否有过挫败感?是否觉得现有的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)诞生了。

原文地址:https://www.cnblogs.com/jerryxing/p/2531210.html