shiro Apache 框架的学习之authentication 和authorization

shiro  作为Apache的开源项目。该框架下的主要模块包含如下:

    1,Subject

    2,SecurityManager

    3,Authenticator

    4,Authorizer

    5,Realm

    6,SessionManager

    7,SessionDao

    8,CacheManager

    9,Cryptography

源码下载链接:http://shiro.apache.org/download.html  详见官网。

    如下以版本1.4学习为主。



    shiro 作为java security  framework, 其特点参考官网和百科。

    如下以例子用户登录做authentication开篇介绍。

    编写如下伪代码:

//伪代码...
class Controller{      ...
      ModelAndView login(Customer  c){
          Subject s = SecurityUtils.getSubject()
          UsenamePasswordToken token = new U...(c);
             try{s.login(token);}
             catche(..){..}
           ..
     }
}    

例子是个简单的login的Controller,使用SpringMVC的思想。

代码中会引入有关shiro框架的各种类。

很明显我们看到了Subject 这个模块了。但是其他的模块好像都没有看到。这个时候我们不得不思考Subject是一个什么类,它是如何来完成Authentication和Authorization的。

很明显我们是一头雾水的,在没看APi的情况下。



源码学习: 通过查看shiro 的API文档 我们至少可以发现Subject的hierarchy 结构图。它有一个委托的子类DelegatingSubject 。以及Api中介绍的如何获得这个instance的方法:SecurityUtils.getSubject() (To acquire the currently-executing Subject 获取当前执行的用户Subject,很明显避免并发产生的问题。

interface  Authencator  method: authencate(...)

SecurityUtils Api下有三个静态的方法;我们可以得到SecurityManager 模块了。在执行Subject的login(token)方法时,通过如上链接下载的源码学习,可以看到login(token)方法由DelegatingSubject的login(token)运行指向了DefaultSecurityManager 的login(subject,token),在此方法中进行authenticate(token)从此开始为了获得AuthenticationInfo 此时:AuthenticatingSecurityManager实现了该方法,执行该方法时,Manager this.authenticator.authenticate()使用一个了 实现了模块Authenticator  authenticate(token)的抽象类AbstractAuthenticator在执行authenticate(token)方法时候,将执行一个doAuthenticate(token)notice:注意虽然AbstractAuthenticator 有方法:authenticate(),但是方法修饰为 final ,不会造成歧义。
doAuthenticate(token)该方法是个抽象方法,这个时候,让子类ModularRealmAuthenticator来实现了该方法。 该方法中我们会得到一个Realms模块。最终方法通过doAuthenticate(token)--->doSingleRealmsAuthentication(realms,token)--->Realms 模块的doGetAuthenticationInfo(token)最终需要我们配置一个类CustomerRealm 来继承AuthorizatingRealms 实现抽象方法doGetAuthenticationInfo(token) 和dogetAuthorizationInfo(token)抽象方法。

总结:在做authenticating和authorizating 时候,我们是将该验证交给了以个核心的SecurityManager来管理。而SecurityManager将该登录验证和权限管理交给对应的...SecurityManager,再交给验证器来做对应的验证和权限验证而为了做这个验证我们将此验证交给开发者来做这个Realms的管理。

而SecurityManager 接口实现了接口:Authenticator, Authorizer, SessionManager


其中的设计模式叫什么来着的,有点忘记了。



原文地址:https://www.cnblogs.com/futureT/p/11380600.html

时间: 2024-11-10 16:12:27

shiro Apache 框架的学习之authentication 和authorization的相关文章

WebApi2官网学习记录--- Authentication与Authorization

Authentication(认证)   WebAPI中的认证既可以使用HttpModel也可以使用HTTP message handler,具体使用哪个可以参考一下依据: 一个HttpModel可以检测ASP.NET请求管道中的所有请求,一个message handler仅仅可以检测到被路由到这个WebAPI的请求 可以预先设置message handlers,让特定的route使用指定的authentication scheme Http Module只能在IIS中使用,Message ha

【Shiro】Apache Shiro架构之身份认证(Authentication)

Apache Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理功能,可为任何应用提供安全保障.本文主要介绍一下Shiro中的身份认证功能,如下: 本文参考自Apache Shiro的官方文档:http://shiro.apache.org/authentication.html. 本文遵循以下流程:先介绍Shiro中的身份认证,再通过一个实例来具体说明一下(基于maven). 1. 认证主体(Authenticating Subjects) Subject 认证主体包

shiro安全框架学习-1

1. apche shiro 是Java的一个安全)框架 2.shiro可以非常容易的开发出足够好的应用,不仅可以在JavaSE环境,也可用在JavaEE环境 3. shiro可以完成 认证,授权,加密,会话管理 .与web 集成 缓存等 4.下载  http://shiro.apache.org/ 目前最新版本为1.3.2,这里 带源码的下载地址为: http://www.apache.org/dyn/closer.cgi/shiro/1.3.2/shiro-root-1.3.2-source

在Spring MVC中使用Apache Shiro安全框架

我们在这里将对一个集成了Spring MVC+Hibernate+Apache Shiro的项目进行了一个简单说明.这个项目将展示如何在Spring MVC 中使用Apache Shiro来构建我们的安全框架. [TOC] 阅读文章前,您需要做以下准备: Maven 3环境Mysql-5.6+JDK1.7+git环境git.oschina.net帐号Apache Tomcat 7+您熟练掌握的编辑工具,推荐使用InterlliJ IDEA 14+开始项目地址git.oschina.net 项目地

shiro安全框架

原文:http://blog.csdn.net/boonya/article/details/8233303 可能大家早先会见过 J-security,这个是 Shiro 的前身.在 2009 年 3 月初之前,这个安全框架叫做 J-security,由于某些原因,更名为 Shiro(或者 Ki,意为 Fortress),是 Apache 的孵化项目,鉴于本文编写时 Shiro 的还没有正式发布的版本,本文使用的是 Jsecurity 的稳定版本 0.9,本文中 Shiro 等同于 Jsecur

SpringMVC整合Shiro权限框架

尊重原创:http://blog.csdn.net/donggua3694857/article/details/52157313 最近在学习Shiro,首先非常感谢开涛大神的<跟我学Shiro>系列,在我学习的过程中发挥了很大的指导作用.学习一个新的东西首先就是做一个demo,多看不如多敲,只有在实践中才能发现自己的欠缺,下面记录下来我整合shiro的过程.如果有不足之处,还望各位看官多多指出. 一.基本名词解释 Apache Shiro是一个强大易用的Java安全框架.它可以帮助我们完成:

Shiro安全框架【快速入门】就这一篇!

Shiro 简介 照例又去官网扒了扒介绍: Apache Shiro? is a powerful and easy-to-use Java security framework that performs authentication, authorization, cryptography, and session management. With Shiro's easy-to-understand API, you can quickly and easily secure any ap

Shiro安全框架「快速入门」就这一篇

Shiro 简介 照例又去官网扒了扒介绍: Apache Shiro™ is a powerful and easy-to-use Java security framework that performs authentication, authorization, cryptography, and session management. With Shiro’s easy-to-understand API, you can quickly and easily secure any ap

BOS项目 第7天(shiro权限框架进行认证和授权)

BOS项目笔记 第7天 今天内容安排: 1.权限概述(认证.授权) 2.常见的权限控制的方式(URL拦截权限控制.方法注解权限控制) 3.权限数据模型(权限表.角色表.用户表.角色权限关系表.用户角色关系表) 4.shiro框架入门 5.将shiro应用到bos项目中进行认证和授权 1. 权限概述 系统提供了很多功能,并不是所有的用户登录系统都可以操作这些功能.我们需要对用户的访问进行控制. 认证:系统提供的用于识别用户身份的功能(通常是登录功能)-----让系统知道你是谁?? 授权:系统提供的