Apache Shiro 1.2.x Reference Manual 中文翻译 目錄 介紹 0 I. Overview 总览 1 1. Introduction 介绍 1.1 2. Tutorial 教程 1.2 3. Architecture 架构 1.3 4. Configuration 配置 1.4 II. Core 核心 2 5. Authentication 认证 2.1 6. Authorization 授权 2.2 6.1. Permissions 权限 2.2.1 7. Realms 2.3 8. Session Management 2.4 9. Cryptography 密码 2.5 III. Web Applications 3 10. Web 3.1 10.1. Configuration 配置 3.1.1 10.2. 基于路径的 url 安全 3.1.2 10.3. Default Filters 默认过滤器 3.1.3 10.4. Session Management 3.1.4 10.5. JSP Tag Library 3.1.5 IV. Auxiliary Support 辅助支持 4 11. Caching 缓存 4.1 12. Concurrency & Multithreading 并发与多线程 4.2 13. Testing 测试 4.3 14. Custom Subjects 自定义 Subject 4.4 V. Integration 整合 5 15. Spring Framework 5.1 16. Guice 5.2 17. CAS 5.3 VI. Tools 工具 6 2 Apache Shiro 1.2.x Reference Manual 中文翻译 18. Command Line Hasher 6.1 VII. Index 目录 7 19. Terminology 术语 7.1 VIII. Other 其他 8 20. 10 Minute Tutorial 十分钟教程 8.1 21. Beginner's Webapp Tutorial 初学者web应用教程 8.2 22. Application Security With Apache Shiro 用Shiro保护你的应用安全 8.3 23. CacheManager 缓存管理 8.4 24. Apache Shiro Cryptography Features 加密功能 8.5 3 Apache Shiro 1.2.x Reference Manual 中文翻译 apache-shiro-1.2.x-reference Chinese translation of Apache Shiro 1.2.x Reference Manual and the other article collection. The laset version of Apache Shiro is 1.2.x. You can also see the demos of the reference at https://github.com/waylau/apache-shiro-1.2.x-reference-demos.There is also a GitBook version of the book: http://waylau.gitbooks.io/apache-shiro-1-2-x-reference or http://www.waylau.com/apache-shiro-1.2.x-reference/. Let's READ! 《Apache Shiro 1.2.x 参考手册》 中文翻译(包含了官方文档以及其他文章)。截止现在 (2015-8-1)Shiro的最新版本为 1.2.4,利用业余时间对此进行翻译,并在原文的基础上,插 入配图,图文并茂方便用户理解。如有勘误欢迎指正。 Get Started 如何开始阅读 选择下面入口之一: https://github.com/waylau/apache-shiro-1.2.x-reference 的 SUMMARY.md(源码) http://waylau.gitbooks.io/apache-shiro-1-2-x-reference 点击 Read 按钮(同步更新,国 内访问速度一般) http://waylau.com/apache-shiro-1.2.x-reference/(国内访问速度快,定期更新。最后更 新于 2016-2-16) Code 源码 书中所有示例源码,移步至 https://github.com/waylau/apache-shiro-1.2.x-reference-demos Issue 意见、建议 如有勘误、意见或建议欢迎拍砖 https://github.com/waylau/apache-shiro-1.2.x- reference/issues Contact 联系作者: Blog: waylau.com Gmail: waylau521(at)gmail.com Weibo: waylau521 介紹 4 Apache Shiro 1.2.x Reference Manual 中文翻译 Twitter: waylau521 Github : waylau 介紹 5 Apache Shiro 1.2.x Reference Manual 中文翻译 1. Introduction 介绍 What is Apache Shiro? Apache Shiro是一个功能强大、灵活的,开源的安全框架。它可以干净利落地处理身份验 证、授权、企业会话管理和加密。 Apache Shiro的首要目标是易于使用和理解。安全通常很复杂,甚至让人感到很痛苦,但是 Shiro却不是这样子的。一个好的安全框架应该屏蔽复杂性,向外暴露简单、直观的API,来 简化开发人员实现应用程序安全所花费的时间和精力。 Shiro能做什么呢? 验证用户身份 用户访问权限控制,比如: 判断用户是否分配了一定的安全角色。 判断用户是否被授予完成某个操作的权限 在非 web 或 EJB 容器的环境下可以任意使用Session API 可以响应认证、访问控制,或者 Session 生命周期中发生的事件 可将一个或以上用户安全数据源数据组合成一个复合的用户 "view"(视图) 支持单点登录(SSO)功能 支持提供“Remember Me”服务,获取用户关联信息而无需登录 … 等等——都集成到一个有凝聚力的易于使用的API。 Shiro 致力在所有应用环境下实现上述功能,小到命令行应用程序,大到企业应用中,而且不 需要借助第三方框架、容器、应用服务器等。当然 Shiro 的目的是尽量的融入到这样的应用环 境中去,但也可以在它们之外的任何环境下开箱即用。 Apache Shiro Features 特性 Apache Shiro是一个全面的、蕴含丰富功能的安全框架。下图为描述Shiro功能的框架图: 1. Introduction 介绍 6 Apache Shiro 1.2.x Reference Manual 中文翻译 Authentication(认证), Authorization(授权), Session Management(会话管理), Cryptography(加密)被 Shiro 框架的开发团队称之为应用安全的四大基石。那么就让我们来 看看它们吧: Authentication(认证):用户身份识别,通常被称为用户“登录” Authorization(授权):访问控制。比如某个用户是否具有某个操作的使用权限。 Session Management(会话管理):特定于用户的会话管理,甚至在非web 或 EJB 应 用程序。 Cryptography(加密):在对数据源使用加密算法加密的同时,保证易于使用。 还有其他的功能来支持和加强这些不同应用环境下安全领域的关注点。特别是对以下的功能 支持: Web支持:Shiro 提供的 web 支持 api ,可以很轻松的保护 web 应用程序的安全。 缓存:缓存是 Apache Shiro 保证安全操作快速、高效的重要手段。 并发:Apache Shiro 支持多线程应用程序的并发特性。 测试:支持单元测试和集成测试,确保代码和预想的一样安全。 "Run As":这个功能允许用户假设另一个用户的身份(在许可的前提下)。 "Remember Me":跨 session 记录用户的身份,只有在强制需要时才需要登录。 1. Introduction 介绍 7 Apache Shiro 1.2.x Reference Manual 中文翻译 2. Tutorial 教程 Your First Apache Shiro Application 第一个 Shiro 应用 如果你是 Apache Shiro 新手,这个简短的教程将向您展示如何通过Apache Shiro 设置一个初 始和非常简单的安全应用程序。接下来我们将讨论 Shiro 的核心概念,帮助你熟悉 Shiro 的设 计和 API。 当你跟随本教程时,如果你不想编辑文件,您可以获得一个几乎相同的示例作为参考。 选择一 个地址: 在Apache Shiro 的 Subversion 存储库: https://svn.apache.org/repos/asf/shiro/trunk/samples/quickstart/ 在Apache Shiro 的源码发布 samples/quickstart 目录中。 源码可以下载。 (译者注:译者也提供了自己的代码,包含了中文注解,本章所含示例如下) 示例1 示例2 示例3 Setup 设置 在这个简单的示例中,我们将创建一个非常简单的命令行应用程序,它将运行并迅速退出,这样你 可以领略到 Shiro 的API。 任何应用程序 Apache Shiro设计从一开始就支持任何应用程序——从最小的命令行应用程序最大的集群 web 应用程序。对于本教程,尽管我们创建一个简单的应用程序,你都知道运用相同的使用模 式来进行应用程序创建或部署。 本教程需要 Java 1.5 或更高版本。 我们还将使用 Apache Maven 作为我们的构建工具,当然 这对于 Apache Shiro 来说不是必须使用。你可能获得 Shiro 的 jars,把他们以任何方式你喜欢 到您的应用程序,例如也许使用Apache Ant 和 Ivy 。 对于本教程,请确保您使用 Maven 2.2.1 或更高版本。为了测试 Maven 安装是否正确,命令行 下运行 mvn --version 并看到类似如下: 2. Tutorial 教程 8 Apache Shiro 1.2.x Reference Manual 中文翻译 现在,在你的文件系统中创建一个新目录,例如, shiro-tutorial 作为项目名并在目录下保存以下 Maven pom.xml 文件: 教程中的 class 我们将运行一个简单的命令行应用程序,因此我们将需要创建一个带 public static void main(String[] args) 方法 Java 类。 包含 pom.xml 文件的同一个目录下,创建一个*src/main/java 子目录。 在 src/main/java 创建一 个 Tutorial.java 文件,包含以下内容: src/main/java/Tutorial.java import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.*; import org.apache.shiro.config.IniSecurityManagerFactory; import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.session.Session; import org.apache.shiro.subject.Subject; import org.apache.shiro.util.Factory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class Tutorial { private static final transient Logger log = LoggerFactory.getLogger(Tutorial.class); public static void main(String[] args) { log.info("My First Apache Shiro Application"); System.exit(0); } } 先不要管引入包的问题。下午将会很快提到。我们先测试下这个应用,会输出 "My First Apache Shiro Application" 并且退出。 Test Run 测试运行 2. Tutorial 教程 9 Apache Shiro 1.2.x Reference Manual 中文翻译 在教程项目的根目录(如 shiro-tutorial )执行以下命令提示符中,输入以下: mvn compile exec:java 你就会看到我们的小教程应用程序的运行和退出。 您应当会看到类似于下面的输出(译者 注:红框中的内容) 我们已经验证了应用程序成功运行——现在让我们使 Apache Shiro。当我们继续学习教程,每 次我们添加更多的代码之后,您可以运行 mvn compile exec:java 看到我们的变化的结果。 Enable Shiro 使用 使用 Shiro 要理解的第一件事情是 Shiro 几乎所有的事情都和一个中心组件 SecurityManager 有关,对于那些熟悉 Java security 的人请注意:这和 java.lang.SecurityManager 不是一回 事。 我们将在Architecture章节详细描述 Shiro 的设计,但现在有必要知道 Shrio SecurityManager 是程序中 Shiro 的核心,每一个程序都必定会存在一个 SecurityManager,所以,在我们这个 示例程序中必须做的第一件事情是建立一个 SecurityManager 实例。 Configuration 配置 虽然我们可以直接对 SecurityManager 实例化,但在 Java 代码中对Shiro 的 SecurityManager 所须的选项和内部组件进行配置会让人感觉有点小痛苦--而将这些 SecurityManager 配置用一个灵活的配置文件实现就会简单地多。 为此,Shiro 默认提供了一个基本的 INI 配置文件的解决方案,人们已经对庞大的 XML 文件 有些厌倦了,而一个 INI 文件易读易用,而且所依赖的组件很少,稍后你就会通过一个简单易 懂的示例明白 INI 在对简单对象进行配置的时候是非常有效率的,比如 SecurityManager 多种配置选择 2. Tutorial 教程 10
Description: