2021-09-30 Shiro项目综述

2021SC@SDUSC

Shiro项目综述

什么是Shiro?

Apache Shiro(读作“sheeroh”,即日语“城”)是一个开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。
Shiro的前身是JSecurity。
2004年,Les Hazlewood和Jeremy Haile创办了Jsecurity。当时他们找不到适用于应用程序级别的合适Java安全框架,同时又对JAAS非常失望。2004年到2008年期间,JSecurity托管在SourceForge上,贡献者包括Peter Ledbrook、Alan Ditzel和Tim Veil。
2008年,JSecurity项目贡献给了Apache软件基金会(ASF),并被接纳成为Apache Incubator项目,由导师管理,目标是成为一个顶级Apache项目。期间,Jsecurity曾短暂更名为Ki(读作“Key”),随后因商标问题被社群更名为“Shiro”。
随后项目持续在Apache Incubator中孵化,并增加了贡献者Kalle Korhonen。2010年7月,Shiro社区发布了1.0版,随后社区创建了其项目管理委员会,并选举Les Hazlewood为主席。2010年9月22日,Shrio成为Apache软件基金会的顶级项目(TLP)。

https://zh.wikipedia.org/wiki/Apache_Shiro

概述

Apache Shiro 是一个多功能的 Java 安全框架。
该框架是高度可定制的和模块化的,因为它提供了身份验证、授权、加密和会话管理。

安装说明

  1. 确保您安装了 JDK 1.8+ 和 Maven 3.0.3+。
  2. 从下载页面下载最新的“Source Code Distribution” 。
  3. 解压源码包:
$ unzip shiro-root-1.8.0-source-release.zip
  1. 进入quickstart目录:
$ cd shiro-root-1.8.0/samples/quickstart
Run the QuickStart:
$ mvn compile exec:java

这个目标只会打印出一些日志消息让你知道发生了什么,然后退出。在阅读本快速入门时,请随时查看samples/quickstart/src/main/java/Quickstart.java. 更改该文件并mvn compile exec:java根据需要经常运行上述命令。

使用说明

1. 依赖

Apache Shiro 有很多模块。但是,在此次源码分析中,我们主要对shiro-core版本进行分析,其他版本都是以shiro-core的基础上做出的延伸。

让我们将它添加到我们的pom.xml 中:

<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-core</artifactId>
    <version>1.4.0</version>
</dependency>

可以在 Maven Central上找到最新版本的 Apache Shiro 模块。

2. 配置安全管理器

安全管理器是 Apache Shiro框架的中心部分。一个应用程序通常只有一个安全管理器实例。
要配置框架,我们需要在资源文件夹中创建一个shiro.ini文件,内容如下:

[users]
user = password, admin
user2 = password2, editor
user3 = password3, author

[roles]
admin = *
editor = articles:*
author = articles:compose,articles:save

shiro.ini配置文件的[users]部分定义了SecurityManager识别的用户凭据。格式为:p rincipal(用户名)=密码,role1,role2,…
角色及其相关权限在[roles]部分中声明。该管理员角色被授予的权限和访问应用程序的每一个部分。这由通配符(*)表示。
在安全管理器用于配置SecurityUtils类。从SecurityUtils 中我们可以获取当前与系统交互的用户,并进行认证和授权操作。
让我们使用IniRealm从shiro.ini文件加载我们的用户和角色定义,然后使用它来配置DefaultSecurityManager对象:

IniRealm iniRealm = new IniRealm("classpath:shiro.ini");
SecurityManager securityManager = new DefaultSecurityManager(iniRealm);

SecurityUtils.setSecurityManager(securityManager);
Subject currentUser = SecurityUtils.getSubject();

现在,我们有一个安全管理器是敏感的用户凭据,并在定义的角色的shiro.ini文件,让我们继续以用户身份验证和授权。

组内分工

在这里插入图片描述
1. 唐子尧:shiro-core/org.apache.shiro.realm;
2. 米良:shiro-core/org.apache.shiro.mgt;
3. 郭东骞:shiro-core/org.apache.shiro.subject;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值