- 浏览: 128250 次
- 性别:
- 来自: 北京
最新评论
-
jack9527:
aaaaaf
Apache Shiro 注解方式授权
文章列表
商业世界里最成功的人们工作的方式与众不同。看看他们是怎么做的——以及为什么他们的做法会成功。
我有幸认识很多非常成功的人。我曾经描写过这些人共有的一套观念和信仰。
他们也有很多共同的习惯:1. 他们不会创建 ...
- 2012-11-28 11:21
- 浏览 745
- 评论(0)
[置顶] Apache Shiro 参考手册
- 博客分类:
- Shiro
关注 Apache Shiro 这个开源项目很长时间了。觉得它是一个非常不错的安全框架,灵巧,强壮。将繁琐复杂的安全应用进行了简化,使开发者非常方便地为应用提供安全保障。
其可不依赖于任何的框架和容器,具有很高的独立性和灵活性,有自己鲜明的特点。
本人把 Apache Shiro 的参考手册整理了一下,希望能给喜欢这个项目或希望了解此项目的同学一些帮助。
官方的参考手册地址 http://shiro.apache.org/reference.html
这里包含了很多别人的研究成果:《Apache_Shiro开发文档.pdf》 《Apache_Shiro_使用手册》 《让Apache ...
Apache Shiro 提供了一个JSP/GSP 标签库,它允许你控制你的JSP,JSTL 或GSP 页面基于当前Subject的状态进行输出。这对于根据用户身份和当前用户的授权状态来提供个性化视图是相当有用的。
标签库的描述文件(TLD)保存在shiro-web.jar里的META-INF/shiro.tld文件。要使用任何标签,需要在你JSP 页面(或任何你定义的页面指令)的顶部添加下面一行:
<%@ taglib
Shiro提供Remember服务,AuthenticationToken需要实现org.apache.shiro.authc.RememberMeAuthenticationToken接口,此接口提供了一个方法:
boolean isRememberMe();
如果该方法返回true,则Shiro 将会在整个会话中记住终端用户的身份ID。
注:经常使用的UsernamePasswordToken 已经实现了RememberMeAuthenticationToken
Servlet容器会话管理
在Web环境中,Shiro默认的会话管理器SessionManager 的实现是ServletContainerSessionManager。这个实现只是简单的封装了Servlet容器,包括会话集群功能。它的本质是Shiro Session API与Servlet容器之间的一个桥梁。
使用这个默认实现的好处是,应用程序将使用现有的servlet容器的会话配置,例如超时,基于特定容器的集群机制等。缺点是你的应用程序依赖于特定servlet容器的会话处理将不适合移植。
Shiro中一些默认的过滤器:
Filter Name
Class
anon
org.apache.shiro.web.filter.authc.AnonymousFilter
authc
org.apache.shiro.web.filter.authc.FormAuthenticationFilter
authcBasic
org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter
试读了《Web应用安全威胁与防治——基于OWASP_Top_10与ESAPI》,感觉这本书写得很好将一些复杂的应用安全理论通过浅显的故事讲述出来,非常方便大家的理解。
读了试读样章后我收获颇丰的一点就是在身份认证中的双因子身份认证。随着互联网应用日渐普及,应用安全的需求也逐步提高。其中身份认证是网络信息安全的基石,如果无法确定用户的身份则不可能进行合理的授权,任何加密或数据传输保护都变得毫无意义,网络和信息安全将难以想象。传统的静态口令方式已无法满足信息安全和管理的需求。
通用的双因子身份认证分为两种:基于PKI的证书认证技术和基于动态口令的 ...
将Shiro
集成到任何
Web
应用程序的最简单的方法是在
web.xml
中配置
ContextListener
和
Filter
,来使
Shiro
知道如何读取
Shiro
的
INI
配置文件。
注意:Spring
框架用户将不执行此设置。如果你使用
Spring
,你将要 ...
Unitils这个
Java
开源类包的目的是让单元测试变得更加容易和可维护。
Unitils
构建在
DBUnit
与
EasyMock
项目之上并与
JUnit
和
TestNG
相结合。支持数据库测试,支持利用
mock
对象进行测试并提供与
Spring
和
Hibernate
相集成。
Unitils
设计成 以一种高度可配置和松散偶合的方式来添加这些服务到单元测试中。
对于想学习使用此测试框架的同学可参看以下的一些资料:
单元测试:Unitils
的简单使用
http://www.open-open.com/lib/view/o ...
加密是使用密钥对数据进行可逆转换的加密算法。我们使用其保证数据的安全,尤其是传输或存储数据时,以及在数据容易被窥探的时候。
如果你曾经用过JDK的CryptographyAPI,特别是javax.crypto.Cipher类,你会知道它是一头需要驯服 ...
- 2012-12-21 10:52
- 浏览 1314
- 评论(0)
如果你曾使用过JDK的MessageDigest类,你会立刻意识到它的使用有点麻烦。MessageDigest类有一个笨拙的基于工厂的静态方法API,它不是面向对象的,并且你被迫去捕获那些永远都不必捕获的CheckedExceptions。如果需要输出十六进制编码或 ...
- 2012-12-21 10:50
- 浏览 849
- 评论(0)
加密是隐藏或混淆需要被保护的数据以防止被非法偷窥的过程。Shiro集中于安全领域两个核心的元素:加密和哈希(也称为消息摘要)。
Shiro的加密管理主要目标是提高一套强大的加密功能同时简化操作便于使用。
Shiro中加密管理的特点:
基于POJO的接口驱动—所有的Shiro的API都以POJO实现。这使得你可以轻松地配置加密与JavaBean兼容的格式,如JSON,YAML,Spring的XML和其他的组件。您也可以重写或自定义加密功能利用Shiro提供的API,以节省您的时间和精力。
简化包装了JCE—除非你是一个密码专家,不然使用Java密码扩展(JCE)是复杂和困难的。Shiro的 ...
- 2012-12-21 10:47
- 浏览 942
- 评论(0)
有状态的应用程序
默认情况下Shiro的SecurityManager实例会使用一个Subject的Session存储Subject的身份ID(PrincipalCollection)和验证状态(subject.isAuthenticated())。这通常发生在一个Subject登录后或当一个Subject的身份ID通过Remember服务后。
使用这种默认方式的好处是:
l任何应用都可通过SessionID来关联请求/调用/消息,并且这是关联用户所必需的。例如,使用Subject.Builder来获取相关的Subject
SerializablesessionId=//getfr ...
- 2012-12-14 15:26
- 浏览 1437
- 评论(0)
ApacheShiro的会话管理提供了一个非常令人兴奋的功能,你可通过Shiro本身实现会话集群而不需要担心容器的环境。你使用Shiro本身的会话和会话集群可以部署到Tomcat,Jetty,JBOSS,Geronimo等任何的环境下,而不用担心容器或环境对集群设置所需要的特定配置。Shiro的会话集群只需配置一次就可运行在任何环境下。
这是怎么做到的呢?
一切是基于Shiro的POJO体系结构,使得创建会话集群非常简单,只要在会话持久层实现集群机制。也就是说,如果你配置了一个具有集群功能的SessionDAO,这个DAO就可以与集群机制交互而SessionManager并不需要知道集群的细 ...
- 2012-12-07 11:19
- 浏览 1473
- 评论(0)
SessionManager是在应用程序中为所有Subject提供Session的管理,包括创建,删除,失效及验证等。同其的核心组件一样,SessionManager也是一个由SecurityManager维护的顶级组件。
在Shiro中默认提供了一个SessionManager的实现DefaultSessionManager。DefaultSessionManager提供一个应用程序所需的所有企业级会话管理。可以在任何应用程序中使用。
如果想自定义一个SessionManager,可在Shiro.ini中配置。例如:
[main]
…
sessionManager=com.fo ...
- 2012-11-28 11:16
- 浏览 1239
- 评论(0)