1、Shiro入门学习手册简单的介绍,简单的配置,简单的扩展By jfm一, shiro简介Apache Shiro是一个强大而灵活的开源安全框架,它能够干净利落地处理身份认证,授权,企业会话管理和加密。以下是你可以用 Apache Shiro所做的事情: 1. 验证用户2. 对用户执行访问控制,如: 判断用户是否拥有角色 admin。判断用户是否拥有访问的权限3. 在任何环境下使用 Session API。例如 CS程序。4. 可以使用多个用户数据源。例如一个是 oracle用户库,另外一个是 mysql用户库。5. 单点登录( SSO)功能。 6. “Remember Me”服务 ,类似购物车
2、的功能, shiro官方建议开启。Shiro的 4大部分 身份验证,授权,会话管理和加密 Authentication:身份验证,简称 “登录 ”。 Authorization:授权,给用户分配角色或者权限资源 Session Management:用户 session管理器,可以让 CS程序也使用 session来控制权限 Cryptography:把 JDK中复杂的密码加密方式进行封装。除了以上功能, shiro还提供很多扩展 Web Support:主要针对 web应用提供一些常用功能。 Caching:缓存可以使应用程序运行更有效率。 Concurrency:多线程相关功能。 Test
3、ing:帮助我们进行测试相关功能 “Run As“:一个允许用户假设为另一个用户身份(如果允许)的功能,有时候在管理脚本很有用。 “Remember Me”:记住用户身份,提供类似购物车功能。Subject 是与程序进行交互的对象,可以是人也可以是服务或者其他,通常就理解为用户。所有 Subject 实例都必须绑定到一个 SecurityManager上。我们与一个 Subject 交互,运行时 shiro会自动转化为与 SecurityManager交互的特定 subject的交互。Subject:SecurityManager 是 Shiro的核心,初始化时协调各个模块运行。然而,一旦 S
4、ecurityManager协调完毕, SecurityManager 会被单独留下,且我们只需要去操作 Subject即可,无需操作 SecurityManager 。 但是我们得知道,当我们正与一个 Subject 进行交互时,实质上是 SecurityManager在处理 Subject 安全操作。SecurityManager:Realms:Realms在 Shiro中作为应用程序和安全数据之间的 “桥梁 ”或 “连接器 ”。他获取安全数据来判断 subject是否能够登录, subject拥有什么权限。他有点类似 DAO。在配置 realms时,需要至少一个 realm。而且 Shi
5、ro提供了一些常用的 Realms来连接数据源,如 LDAP数据源的 JndiLdapRealm, JDBC数据源的 JdbcRealm, ini文件数据源的 IniRealm, properties文件数据源的 PropertiesRealm,等等。我们也可以插入自己的 Realm实现来代表自定义的数据源。 像其他组件一样, Realms也是由SecurityManager控制小结:1.Subject(org.apache.shiro.subject.Subject):简称用户2.SecurityManager(org.apache.shiro.mgt.SecurityManager) 如上
6、所述, SecurityManager是 shiro的核心,协调 shiro的各个组件3.Authenticator(org.apache.shiro.authc.Authenticator): 登录控制注: Authentication Strategy(org.apache.shiro.authc.pam.AuthenticationStrategy) 如果存在多个 realm,则接口 AuthenticationStrategy会确定什么样算是登录成功(例如,如果一个 Realm成功,而其他的均失败,是否登录成功?)。 4.Authorizer(org.apache.shiro.auth
7、z.Authorizer) :决定 subject能拥有什么样角色或者权限。5.SessionManager(org.apache.shiro.session.SessionManager) :创建和管理用户 session。通过设置这个管理器, shiro可以在任何环境下使用 session。6.CacheManager(org.apahce.shiro.cache.CacheManager) :缓存管理器,可以减少不必要的后台访问。提高应用效率,增加用户体验。7.Cryptography(org.apache.shiro.crypto.*) :Shiro的 api大幅度简化 java ap
8、i中繁琐的密码加密。8.Realms(org.apache.shiro.realm.Realm) :程序与安全数据的桥梁二,简单配置注:这里只介绍 spring配置模式。因为官方例子虽然中有更加简洁的 ini配置形式,但是使用 ini配置无法与 spring整合。而且两种配置方法一样,只是格式不一样。涉及的 jar包Jar包名称 版本核心包 shiro-core 1.2.0Web相关包 shiro-web 1.2.0缓存包 shiro-ehcache 1.2.0与 spring整合包 shiro-spring 1.2.0Ehcache缓存核心包 ehcache-core 2.5.3Shiro自身日志包 slf4j-jdk14 1.6.4