Apache Shiro系列一,概述 —— 初识

一、什么是Shiro

         Apache Shiro是一个强大、灵活、开源的安全框架,它支持用户认证、权限控制、企业会话管理以及加密等。

        

         Apache Shiro的第一个也是最重要的一个目标就是易于使用和理解。对应用程序做安全管理常常很复杂,甚至很痛苦,但是实际上完全可以避免。一个好的安全安全管理框架应该能够将复杂度隐藏在框架内部,对外提供简洁、直观的API,以便用户可以很简单的给应用添加安全控制。

        

         下面是Apache Shiro能够提供给我们的一些特性:

         #,做用户身份认证;

         #,做访问权限控制,比如:

                   #,这个用户是否被赋予了某个角色;

                  #,这个用户是否有权限做某件事情;

         #,可以在任何环境下使用用户会话管理,即便没有web或者ejb容器也可以;

         #,可以整合多种类型的用户权限数据(比如关系数据库、LDAP等)到一个用户视图界面;

         #,支持单点登录(Single Sign On SSO);

         #,支持 记住秘密 服务。

        

         Shiro尽力为各种应用程序的环境来达成以上的目标——从简单的命令行程序到大型企业应用,不要求支持任何第三方的框架、容器或者应用服务器。当然,Shiro会尽力与这些环境集成,但是Shiro的运行绝对不会依赖于这些环境。

 

        

 

二、Apache Shiro的特性

         Shiro的特性很多,下图展示了Shiro的架构,从中我们可以了解到Shiro聚焦在哪里,并且我们这个系列的文档也是按照类似的结构来组织。

        

 

         Shiro聚焦与应用程序安全领域的四大基石:认证、授权、会话管理和保密。

         #,认证,也叫作登录,用于验证用户是不是他自己所说的那个人;

         #,授权,也就是访问控制,比如用于决定“谁”是否有权限访问“什么”;

         #,会话管理,管理用户相关的会话,即使在非web和ejb的环境下也支持;

         #,保密,使用特性加密算法来保证用户数据的安全性,同时还要保证用起来够简单;

 

         同时Shiro还提供了其他特性来在不同的应用程序环境下使用强化以上的四大基石:

#,Web支持:Shiro的web相关的API简化了web应用安全控制;

#,缓存,在Shiro中,缓存是一等公民,用于保证用户认证和权限控制的性能;

#,测试,支持可测试性,以便用户可以方便的对安全相关代码编写单元测试和集成测试;

#,记住密码,可以跨会话的记住用户的身份信息,以便只有在一些强制性的场合才需要登录。

        

概述 —— 基本概念


做任何事情,首先要双方就一些概念的理解达成一致,这样大家就有共同语言,后续的沟通效率会高一些。

 

#,Authentication,认证,也就是验证用户的身份,就是确定你是不是你,比如通过用户名、密码的方式验证,或者某些第三方认证,比如微信认证。

#,Authorization,授权,也叫访问控制,也就是看你是否有权限做什么事情,比如是否有权限看某个文件,或者是否有权限做后台管理;

#,Cipher,加密方式,这里主要有几种常用的加密方式,比如分组密码(Block Ciphers)、流密码(Stream Ciphers)、对称加密(Symmetric Ciphers)、非对称加密(Asymmetric Ciphers

#Credential,证书,比如密码、指纹或者网银的Key都算是证书的一种。系统通过将用户提供的证书和系统存储的证书比较,如果一致就认为用户的身份是对的;

#Hash,哈希,一种单相的数据加密算法;

#Persmission,权限,用于描述系统的某项基础功能,比如 “打开一个文件”,“查看’/user/list/’页面”,“打印文档”,这些都算是一种权限;

#Principal,身份,就是一种用于标识用户身份的一种属性,比如邮箱、电话号码、用户名、微信号等;

#Realm,这是一个用于访问应用程序的用户、角色、权限的组件,可以把它看做是ShiroDAO(Data Access Object),用于把各种存储介质(比如关系数据库、LDAP、文件)内的用户权限数据转换为Shiro能够理解的格式。

#Role,角色,在Shiro中,角色就是权限的组合;

#Session,会话,也就是用户登录之后的上下文,在用户登出之前可以不用传递用户名、密码就可以做各种操作;

#Subject,起始就是user,但是在Shiro中把它叫做Subject,因为和我们系统交互的不一定是人,也可能是其他的系统。

 

 

官方文档:http://shiro.apache.org/introduction.html


阅读更多
换一批

没有更多推荐了,返回首页