没有合适的资源?快使用搜索试试~ 我知道了~
Shiro 是一个 Apache Incubator 项目,旨在简化身份验证和授权。在本文中,了解 Apache Shiro 并通过示例来在一个 Groovy web 应用程序中尝试使用 Shiro 进行身份验证和授权。
资源推荐
资源详情
资源评论
Apache Shiro Reference Documentation
Introduction to Apache Shiro
What is Apache Shiro?
Apache Shiro 是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密。
Apache Shiro 的首要目标是易于使用和理解。安全有时候是很复杂的,甚至是痛苦的,但它没有必要这样。框架应
该尽可能掩盖复杂的地方,露出一个干净而直观的 API,来简化开发人员在使他们的应用程序安全上的努力。
以下是你可以用 Apache Shiro 所做的事情:
验证用户来核实他们的身份
对用户执行访问控制,如:
判断用户是否被分配了一个确定的安全角色
判断用户是否被允许做某事
在任何环境下使用
Session API
,即使没有
Web
或
EJB
容器。
在身份验证,访问控制期间或在会话的生命周期,对事件作出反应。
聚集一个或多个用户安全数据的数据源,并作为一个单一的复合用户“视图”。
启用单点登录(
SSO
)功能。
为没有关联到登录的用户启用
"Remember Me"
服务
…
以及更多——全部集成到紧密结合的易于使用的 API 中。
Shiro 视图在所有应用程序环境下实现这些目标——从最简单的命令行应用程序到最大的企业应用,不强制依赖其
他第三方框架,容器,或应用服务器。当然,该项目的目标是尽可能地融入到这些环境,但它能够在任何环境下立
即可用。
Apache Shiro Features
Apache Shiro 是一个拥有许多功能的综合性的程序安全框架。下面的图表展示了 Shiro 的重点,并且这个参考手册也
会与之类似的被组织起来:
Shiro 把 Shiro 开发团队称为“应用程序的四大基石”——身份验证,授权,会话管理和加密作为其目标。
Authentication
:有时也简称为“登录”,这是一个证明用户是他们所说的他们是谁的行为。
Authorization
:访问控制的过程,也就是绝对“谁”去访问“什么”。
Session Management
:管理用户特定的会话,即使在非
Web
或
EJB
应用程序。
Cryptography
:通过使用加密算法保持数据安全同时易于使用。
也提供了额外的功能来支持和加强在不同环境下所关注的方面,尤其是以下这些:
Web Support
:
Shiro
的
web
支持的
API
能够轻松地帮助保护
Web
应用程序。
Caching
:缓存是
Apache Shiro
中的第一层公民,来确保安全操作快速而又高效。
Concurrency
:
Apache Shiro
利用它的并发特性来支持多线程应用程序。
Testing
:测试支持的存在来帮助你编写单元测试和集成测试,并确保你的能够如预期的一样安全。
"Run As"
:一个允许用户假设为另一个用户身份(如果允许)的功能,有时候在管理脚本很有用。
"Remember Me"
:在会话中记住用户的身份,所以他们只需要在强制时候登录。
Apache Shiro Tutorial
Your First Apache Shiro Application
如果你从未使用过 Apache Shiro,这个简短的教程将会向您展示如何建立一个由 Apache Shiro 担保的初始的及非常
简单的应用程序。一路上我们将讨论 Shiro 的核心概念来帮助你熟悉 Shiro 的设计和 API。
当你遵循本教程时,如果你确实不想编辑文件,你可以得到一个几乎相同的实例应用程序并按照你的意愿引用它。
选择一个位置:
在
Apache Shiro
的版本控制库:
https://svn.apache.org/repos/asf/shiro/trunk/samples/quickstart
在
Apache Shiro
的源代码的
samples/quickstart
目录。该源代码在
Download
页面提供下载。
Setup
在这个简单的示例中,我们将创建一个非常简单的命令行应用程序,它将会运行并迅速退出,这样你能够获得对 Shiro
的 API 的感受。
Any Application
Apache Shiro 从开始的那天起就被设计成能够支持任何应用程序——从最小的命令
行应用程序到最大的群集 Web 应用程序。即使我们为该教程创建的是一个简单的应
用,了解相同的使用模式适用于无论你的应用程序是怎样创建的及它被部署到哪里。
该教程需要 Java 1.5 及更高本。我们也使用 Apache Maven 作为我们的构建工具,但当然这不是使用 Apache Shiro 所
必需的。你可以获取 Shiro 的 jar 包并按你喜欢的方式合并到你的应用程序,例如可能是一 Apache Ant 和 Ivy。
对于本教程,请确保你正在使用 Maven 2.2.1 或更高版本。你应该能够键入 mvn -version 命令行提示符,并看到与
下面类似的东西:
现在,在你的文件系统上创建一个新的目录,例如,shiro-tutorial 并在该目录下保存下面的 Maven pom.xml 文件:
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</moderVersion>
<groupId>org.apache.shiro.tutorials</groupId>
<artifactId>shiro-tutorial</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>First Apache Shiro Application</name>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<!-- This plugin is only to test run our little application. It is not
needed in most Shiro-enabled applications: -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<classpathScope>test</classpathScope>
<mainClass>Tutorial</mainClass>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.1.0</version>
</dependency>
<!-- Shiro use SLF4J for logging. We'll use the 'simple' binding
in this example app. See http://ww.slf4j.org for more info. -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.6.1</version>
<scope>test</scope>
</dependency>
<dependencies>
</project>
The Tutorial 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 = LoggerFacutory.getLogger(Tutorial.class);
public static void main(String[] args) {
log.info("My First Apache Shiro Application");
System.exit(0);
}
}
现在不必担心 import 语句——我们不久将会涉及到它们。但现在,我们得有一个命令行应用程序“外形”。该程序
所能够做到全部事情是打印出文本"My First Apache Shiro Application"并退出。
Test Run
要试用我们的教程应用程序,请在你的教程项目的根目录下执行以下的命令提示符,并键入以下内容:
mvn compile exec:java
然后你将看到我们的 little 教程“程序”运行并退出。你应该会看到与下面相似的一些东西(注意粗体文本,它显
示了我们的输出):
Run the Application
lhazlewood:~/projects/shiro-tutorial$ mvn compile exec:java
... a bunch of Maven output ...
1 [Tutorial.main()] INFO Tutorial - My First Apache Shiro Application
lhazlewood:~/projects/shiro-tutorial\$
我们已经验证了该程序运行成功——现在让我们启用 Apache Shiro。当我们继续本教程的时候,你可以在每次我们
添加一些代码后运行 mvn compile exec:java 来观察我们变化后的结果。
Enable Shiro
在应用程序中启用 Shiro 最先要明白的事情是几乎在 Shiro 中的每个东西都与一个名为 SecurityManager 的主要的/核
心的组件有关。对于那些熟悉 Java 安全的人来说,这是 Shiro 的 SecurityManager 概念——它不等同于
java.lang.SecurityManager。
虽然我们将在 Architecture 章节详细的涉及到 Shiro 的设计,但现在了解 Shiro 的 SecurityManager 是应用程序的 Shiro
环境的核心及每个应用程序中必须存在一个 SecurityManager 是很有益处的。因此,在我们的教程应用程序中第一
件要做的事情就是配置 SecurityManager 实例。
Configuration
剩余91页未读,继续阅读
资源评论
小周_我
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功