标签:
学习大部分知识的时候,都会有这样出现这样的几个问题。这是什么?如何使用?使用的意义所在?再泛化到主题shiro,有这样几个疑惑。什么是shiro?为什么要使用shiro?
ApacheShiro一个功能强大,使用简单的Java安全框架,它为开发人员提供一个直观而全面的认证,授权,加密及会话管理的解决方案。
相比springsecurity,功能上shiro相对较少;使用上相对简单;适用面上,shiro覆盖了小到移动端的应用,大到企业级开发中的web应用及相关程序。而spring security仅仅能为j2ee的开发提供服务。功能少所以使用上相对简单,适用面上更加宽泛。
shiro到底能做什么呢?,在shiro的官方首页中标明了如下几个模块。
Authentication(认证):用来验证用户到底是谁,为此用户需要提供某种某种获取系统识别和信任形式的身份证明这样的一个过程称之为认证。
Authorization(授权):也叫访问控制。确定应用程序是否有对资源的访问权限,换句话说就是谁有权访问。shiro尽可能的在这样一个过程中去减少复杂性,更加简洁的操作达到授权的目的。
Cryptograpthy(加密):即通过隐藏信息或将信息转换为不可读的状态。
shiro在加密主要侧重两种方式,1.公钥、私钥的方式2.消息摘要方式
SessionManagement(会话管理):先介绍什么是session?session就是用户登录到应用系统到loginout之前,这样一个时期称之为session。SessionManagement呢?就是shiro提供了很多丰富的功能来提供给开发者更好的存储、共享信息或异构客户端访问等。在shiro的官方介绍中,会话管理是适用于普遍开发环境的。
图中描述了某个“用户”在访问系统之后,shiro处理这样的一个过程。
subject:当前访问应用系统的user,这里user泛指访问应用系统的的用户、程序等。
Security Manager:用来协调shiro内部组件针对user的服务,管理所有的组件。可以联想到pattern model中的fa?ade pattern。
realm:通俗理解为数据源。即通过realm来获取当前session中的user在datasource中的权限信息。如:角色、权限资源等。
可以有多种实现方式,如jdbc方式。通常会根据开发环境的不同在自定义开发者所需的realm。
可以发现shiro并不会去管理权限,而是通过开发者提供的数据注入到shiro的realm中来提供权限服务。
如图所示
所以总结shiro一般处理流程一般情况分为以下步骤
1.应用“user”,即subject来访问应用系统,经过认证处理。通过即进入授权。
此时subject来调用securityManager。
2.security Manager调用内部realm得到权限数据
3.验证“user”和realm得到的数据,决定是否授权等操作。授权则user可以访问被shiro保护的资源。
参考资料:
标签:
原文地址:http://blog.csdn.net/cfl20121314/article/details/45958463