Apache Shiro™ 是一个强大、简单易用的身份认证、访问控制、加解密和session管理 的JAVA 安全框架。
无论是移动应用还是web或者企业应用,你都能快速的利用Shiro提供的简单的易懂的API 来保证你的应用的安全性。
身份认证也就是身份校验,即校验用户的身份和行为。具体操作:用户需要提供系统能够识别和信任的身份证明。
Shiro框架的设计理念是让身份认证无侵入性和简单易用性,同时尽可能提供丰富的特性。
以下是shiro抢眼的身份认证特性:
1)、Subject Based(基于对象) :在shiro,你能做的任何事都是依赖于当前地操作用户,此时的用户成为一个对象(subject)。
2)、Single Method call(单个方法调用):实现身份认证的值需要调用一个方法。只需要简单地调用一个方法来保持你代码干净,节省你的时间开支。
3)、Rich Exception Hierarchy(丰富的异常级别):Shiro提供了丰富的异常级别,可以详细的阐述为什么登录失败。异常级别可以帮助你简单地诊断代码的bug和帮助客户解决有关身份认证的问题。另外,你可以利用这个功能创建更复杂的身份认证功能。
4)、‘Remember Me’ built in(记住我):Shiro API可以记住你用户,你可以利用这个功能提供更好的用户体验。
5)、Pluggable data sources(可拔插的数据源):Shiro 使用可拔插的数据访问对象(DAOs),也称为Realms。
Shiro为常用的数据源提供了开箱即用的realms,例如LDAP,Active Directory,jdbc。你也可以自定义realms。
6)、Login with one or more realms(依赖一个或者多个Realm登录):使用shiro我们可以简单地使用一个或者多个realm来认证用户,并且返回统一的视图给用户。
访问控制对于任何应用来说都是至关重要的。shiro的目标就是让你能够简单地实现访问控制。访问控制也就是控制用户能做什么,不能做什么。
1)、Subject-based(基于主题):shiro基本都是依赖于当期正在使用的用户(subject)。你的代码可以通过访问subject,从而取得Subject对象,并且可以验证它的角色,权限或者其他一些属性。
2)、Checks based on roles or permissions(校验是基于角色或者许可证):shiro的设计是很灵活的,既可以基于角色来校验,也可以使用许可证(类似token)来校验。
3)、Multiple enforcement options(多种实施选择):访问控制可以通过多种方式实现,如:JDK1.5以上提供的注解、AOP、JSP/GSP 标签等。shiro的目标就是提供多种选择,可以让你根据需要选择合适的方式。
4)、Strong caching support(强大的缓存支持):shiro几乎支持了所有开源的、企业的缓存产品。
5)、Powerful and intuitive permission syntax(强大、简便的权限语法):shiro提供了一种开箱即用的权限语法,叫做Wildcard Permissions。
5)、Pluggable data sources(可拔插数据源)
6)、Supports any data model(支持任意的数据模型)
加密是通过隐藏或者转换数据成看不懂的字符,从而保护不希望被访问的信息的行为。
Cipher Features:AbstractSymmetricCipherService
, DefaultBlockCipherService
, AesCipherService
Hash Features:MD5, SHA1, SHA-256等
session是用户在使用你的应用期间,携带用户信息的数据。
1)、POJO/J2SE based (IoC friendly):shiro都是通过接口变成或者实现接口。这样很简单的配置session组件。你也可以override shiro的组件,从而自定义session管理。
2)、Session Storage(sesion存储):因为shiro的session对象是基于POJO,所以session数据可以很简单地存储到任何数据源。
3)、Easy and Powerful Clustering(简单、强大的集群):shiro 的session 可以很简单地通过网络缓存产品(如ehcache)集群。
4)、Heterogeneous Client Access (允许各种各样的客户端访问)
5)、Event listeners(事件监听)
6)、Host address retention(保留主机地址)
7)、Inactivity/expiration support (不活动、过期支持):由于不活动(session不更新)而导致session过期。
8)、ransparent web use
9)、Can be used for SSO(容易用于SSO)
尽管shiro设计师基于JVM的安全框架,但是它通常用于web 应用。他通过简单的URL匹配和chain的定义来实现安全性。
另外,shiro可以与其他技术跟框架整合。