文档章节

Shiro权限入门介绍

boonya
 boonya
发布于 2014/11/20 13:24
字数 1368
阅读 445
收藏 1

行业解决方案、产品招募中!想赚钱就来传!>>>

nShiro是什么

  Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能 

nShiro能做什么

  认证:验证用户来核实他们的身份

  授权:对用户执行访问控制,如:

  判断用户是否被分配了一个确定的安全角色

  判断用户是否被允许做某事

  会话管理:在任何环境下使用Session API,即使没有Web 或EJB 容器。

  加密:以更简洁易用的方式使用加密的功能,保护或隐藏数据防止被偷窥

  Realms:聚集一个或多个用户安全数据的数据源,并作为一个单一的复合用户“视图”。

  启用单点登录(SSO)功能。

  为没有关联到登录的用户启用"Remember Me"服务

Shiro的四大部分——身份验证,授权,会话管理和加密

· Authentication:有时也简称为“登录”,这是证明用户是他们所说的他们是谁的行为。

· Authorization:访问控制的过程,也就是绝对“谁”去访问“什么”。

· Session Management:管理用户特定的会话,即使在非Web 或EJB 应用程序。

· Cryptography:通过使用加密算法保持数据安全同时易于使用

 

n除了以上功能,shiro还提供很多扩展

  Web Support:主要针对web应用提供一些常用功能。

  Caching:缓存可以使应用程序运行更有效率。

  Concurrency:多线程相关功能。

  Testing:帮助我们进行测试相关功能

  "Run As":一个允许用户假设为另一个用户身份(如果允许)的功能,有时候在管理脚本很有用。

  “Remember Me”:记住用户身份,提供类似购物车功能。

nSubject

  Subject 实质上是一个当前执行用户的特定的安全“视图”。Subject 可以是一个人,也可以代表第三方服务,或其他类似的任何东西——基本上是当前正与软件进行交互的任何东西。

  所有Subject 实例都被绑定到(且这是必须的)一个SecurityManager 上。当你与一个Subject 交互时,那些交互作用转化为与SecurityManager 交互的特定subject 的交互作用。

 

nSecurityManager

  SecurityManager 是Shiro 架构的心脏,用来协调内部的安全组件共同构成一个对象图,管理内部组件实例,并通过它来提供安全管理的各种服务。

  实际开发中,程序人员主要与Subject交互,但是要认识到,当你正与一个Subject 进行交互时,实质上是幕后的SecurityManager 处理所有繁重的Subject 安全操作。

nRealms

  Realms 担当Shiro 和你的应用程序的安全数据之间的“桥梁”或“连接器”。当它实际上与安全相关的数据如用来执行身份验证(登录)及授权(访问控制)的用户帐户交互时,Shiro 从一个或多个为应用程序配置的Realm 中寻找许多这样的东西。

  Realm 本质上是一个特定安全的DAO:它封装了数据源的连接详细信息,使Shiro 所需的相关的数据可用。当配置Shiro 时,你必须指定至少一个Realm 用来进行身份验证和/或授权。SecurityManager可能配置多个Realms,但至少有一个是必须的。

  Shiro 提供了立即可用的Realms 来连接一些安全数据源(即目录),如LDAP,关系数据库(JDBC),文本配置源,像INI 及属性文件,以及更多。你可以插入你自己的Realm 实现来代表自定义的数据源,如果默认地Realm 不符合你的需求。

 

nAuthenticator :是一个执行对用户的身份验证(登录)的组件。Authenticator 知道如何与一个或多个Realm 协调来存储相关的用户/帐户信息。从这些 Realm 中获得的数据被用来验证用户的身份来保证用户确实是他们所说的他们是谁。

n如果存在多个realm,则接口AuthenticationStrategy会确定什么样算是登录成功(例如,如果一个Realm成功,而其他的均失败,是否登录成功?)。

nAuthorizer :授权实质上就是访问控制 - 控制用户能够访问应用中的哪些内容,比如资源、Web页面等等。

nSessionManager :提供可在任何应用或架构层一致地使用Session API。

nSessionDAO:代表SessionManager 执行Session 持久化(CRUD)操作。

nCacheManager :对Shiro的其他组件提供缓存支持。

nCryptography:Shiro的api大幅度简化java api中繁琐的密码加密

nRealms:Realms 在Shiro 和你的应用程序的安全数据之间担当“桥梁”或“连接器”。简单的说,shiro通过Realms来获取相应的安全数据

Shiro 的 HelloWorld

n构建开发和运行环境:

1:在eclipse里面创建一个基本的java工程

2:加入所需要的jar包

n在src下创建TestShiro.ini文件,内容如下:

[users]
javass = cc,role1
 
[roles]
role1 = p1,p2

3:创建cn.javass.hello包,并创建HelloWorld类

public class HelloWorld {
  public static void main(String[] args) {
  Factory<org.apache.shiro.mgt.SecurityManager> f = new IniSecurityManagerFactory("classpath:TestShiro.ini");
  org.apache.shiro.mgt.SecurityManager s = f.getInstance();
  SecurityUtils.setSecurityManager(s);
 
  UsernamePasswordToken token = new UsernamePasswordToken("javass","cc");
  token.setRememberMe(true);

  Subject currentUser = SecurityUtils.getSubject();
  currentUser.login(token);

  boolean flag = currentUser.isPermitted("p1");
  System.out.println("flag==" + flag);
  }
}

私塾在线原创,转载请注明http://sishuok.com/forum/blogPost/list/0/7451.html


boonya
粉丝 80
博文 390
码字总数 77738
作品 0
海淀
高级程序员
私信 提问
加载中
请先登录后再评论。
5分钟 maven3 快速入门指南

前提条件 你首先需要了解如何在电脑上安装软件。如果你不知道如何做到这一点,请询问你办公室,学校里的人,或花钱找人来解释这个给你。 不建议给Maven的服务邮箱来发邮件寻求支持。 安装Mav...

fanl1982
2014/01/23
1.2W
6
php开源框架--CorePHP

简介: CorePHP框架是一个快速,安全,灵活的php开源框架,主要是为了简化和快速开发小型项目和开源系统二次开发而诞生。它既可以完美的支持MVC模式,又可以不受限制的支持传统编程模式。它是...

shooke
2012/12/27
2.8K
1
商铺记账系统软件--bluebee蓝蜜蜂记账系统

此项目已废弃:) Donate捐助 bluebee accounting system is a popular and free accounting system for individual businesses.This system focus on the individual businesses operation......

刘学炜
2013/04/18
1.4W
10
权限控制框架--authorityFilter

基于java 过滤器(Filter)实现对权限控制的框架。 依赖jar:log4j.jar,fastjson.jar 软件由三部分组成: 权限过滤器AuthorityFilter # 负责过滤url并执行权限检查器中的权限验证方法(check...

寻觅一只耳朵
2013/05/05
3.1K
0
ZBUS高可用HA介绍

请参考最新文档 http://zbus.io/guide/ha?menu=ha http://git.oschina.net/rushmore/zbus 1. ZBUS 高可用设计 Zbus高可用采用ZbusServer + TrackServer结合完成,相对于单机版本的zbus,客户...

少帮主
2015/12/21
5.9K
6

没有更多内容

加载失败,请刷新页面

加载更多

鼠年吉祥,新年快乐

今天是大年初一,很高兴在过去一年中有您的陪伴,希望大家在新的一年中平安健康,一切顺利,加油。 邓飞 202001250539 于后园爷爷家 本文分享自微信公众号 - 育种数据分析之放飞自我(R-bre...

育种数据分析之放飞自
01/25
0
0
不烧脑、不耗时、全免费,带你0基础学Python

文末有福利 Python是人工智能的未来。 最近,电气和电子工程师协会( IEEE)发布了顶级编程语言交互排行榜:Python高居首位。 而且随着大数据和人工智能的发展,Python受到了越来越多程序员的...

kunjian
今天
0
0
R语言入门系列之一

写在前面 计算机语言的学习并不困难,关键是一定要由浅入深的实际操作练习。也许最开始的比较简单,学习者一带而过没有实际操作,之后的进一步学习很可能会陷入不知所云的困境,实际操作所带...

SYSU星空
2019/02/17
0
0
Istio-本地运行

概述 基于上一篇 Istio1.6-二进制编译和本地运行 但集中在 pilot-discovery 和 envoy(pilot-agent 大部分功能仅作为 envoy 的 watchdog,略过) NOTE: 以下的描述,相对路径都基于目录 /g...

深蓝苹果
26分钟前
9
0
基于Linux、C、JSON、Socket的编程实例(附代码)

点击上方「嵌入式大杂烩」,选择「置顶公众号」第一时间阅读编程笔记! 一、前言 之前在学习socket编程的时候有分享一个基于控制台的简易天气客户端的实现,当时提供的是window下的代码,最近...

学以解忧
2019/10/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部