码迷,mamicode.com
首页 > Web开发 > 详细

Apache Shiro (一)

时间:2016-06-29 13:14:50      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:

  参考博客: http://jinnianshilongnian.iteye.com/blog/2018398

1、shiro简介

  Apache shiro 是一个JAVA框架,可用于身份难和授权。shiro基本功能如下:

    身份验证、授权、会话管理、加密、web支持、caching、concurrency(shiro支持多线程应用的并发难,即如在一个线程中开启另一个线程,能把权限自动传播过去)、Testing(提供测试支持)、Run As(允许一个用户假装为另一个用户的身份进行访问)、Remember Me:记住我。

    eg: Shiro不会维护用户、维护权限;这些需要我们自己去设计/提供;然后通过相应的接口注入给Shiro

  好的框架:从外部看应该具有非常简单易于使用的API,且API契约明确;从内部来看的话,其应该有一个可扩展的架构,即非常容易插入用户自定义实现,因为任何构架都不能满足需要。

  谁使用Shiro--》应用程序。从应用程序的角度来说Shiro。交互使用subject(主体),Realm(域),SecurityManager(安全管理器)。通俗一些的话,subject是行政部门与外界联系,Realm是整个公司的业务数据,工作主要由公司的核心部门(SecurityManager)支持。

  eg:最简单的一个Shiro应用:

    1. 应用代码通过Subject来进行认证和授权,而Subject又委托给SecurityManger;

    2.我们需要给Shiro的SecurityManager注入Realm,从而让SecurityManger能得到合法的用户及其权限进行判断。

  shrio 不提供维护用户权限,而是通过Realm让开发人员自己注入。

  Shiro如何工作--》Security Manager 如何与其他组件交互的?

    Authenticator(认证器):需要认证策略,可以自定义。

    Realm(数据源):可以有一个或多个。安全实体数据源.JDBC,LDAP,内存等。由用户提供。eg:Shiro不知道你的用户/权限存储在哪以及以何种格式存储;所以我们一般在应用中都需要实现自己的Realm;

    SessionManager(会话管理):Shrio抽象一个自己的Session来管理主体与应用之间交互的数据;这样的话,比如我们在WEB环境用,刚开始是一台WEB服务器;接着又上了台EJB服务器;这时想把两台服务器的会话数据放在一个地方,这个时候就可以实现自己的分布式会话了(如把数据放到Memcached服务器)

    SessionDao:写到数据库。想把session 放到 memcached中,可以实现自己的Memcached SessionDao;另外SessionDAO可以使用Cache进行缓存,以提高性能;

     cacheMember:缓存控制器.

    Cryptography:密码模块.

 

    总结:shiro就是使用subject与外界进行联系。用户通过Realm写入控制的授权用户与权限。shiro使用SecurityManger通过与其内部的其他组件的交互实现功能的。

Apache Shiro (一)

标签:

原文地址:http://www.cnblogs.com/fanruili/p/5626395.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!