Apache shiro集群实现 (一) shiro入门介绍

近期在ITOO项目中研究使用Apache shiro集群中要解决的两个问题,一个是Session的共享问题,一个是授权信息的cache共享问题,官网上给的例子是Ehcache的实现,在配置说明上不算很详细,我在我们的项目中使用的是nosql(Redis)替代了ehcache做了session和cache的存储,接下来从shiro、Cas、redis、session等等基础知识、基本原理集成的角度来不断的深入分析,系列文章篇幅很长,很丰富,尽请期待!

今天我们先来介绍shiro的基本概念

一、shiro功能介绍

  1. Authentication:身份认证/登录
  2. Authorization:验证权限,即,验证某个人是否有做某件事的权限。
  3. Session Management:会话管理。管理用户特定的会话,支持web,非web,ejb。
  4. Cryptography: 加密,保证数据安全。
  5. 其他特性。
  • Web Support:web支持,更容易继承web应用。
  • Caching:缓存
  • Concurrency :多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去;
  • Testing:提供测试支持。
  • Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;
  • Remember Me:记住我,即记住登录状态,一次登录后,下次再来的话不用登录了 。

二、架构介绍

从最顶层看shiro,有三个最基本概念 : Subject, SecurityManager 和Realms。

Subject:主体。抽象概念,代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如网络爬虫,机器人等。

SecurityManager:安全管理器。shiro的核心, 所有与安全有关的操作都会与SecurityManager交互;且它管理着所有Subject。

Realms: shiro和应用程序的权限数据之间的桥梁,为shiro提供安全数据。 SecurityManager要验证用户身份,那么它需要从Realm获取相应的用户进行比较以确定用户身份是否合法;也需要从Realm得到用户相应的角色/权限进行验证用户是否能进行操作;可以把Realm看成DataSource,即安全数据源。

Shiro的架构,如下图所示:

Subject (org.apache.shiro.subject.Subject)

与应用交互的主体,例如用户,第三方应用等。

SecurityManager (org.apache.shiro.mgt.SecurityManager)

SecurityManager是shiro的核心,负责整合所有的组件,使他们能够方便快捷完成某项功能。例如:身份验证,权限验证等。

Authenticator (org.apache.shiro.authc.Authenticator)

认证器,负责主体认证的,这是一个扩展点,如果用户觉得Shiro默认的不好,可以自定义实现;其需要认证策略(Authentication Strategy),即什么情况下算用户认证通过了。

Authorizer (org.apache.shiro.authz.Authorizer)

来决定主体是否有权限进行相应的操作;即控制着用户能访问应用中的哪些功能。

SessionManager (org.apache.shiro.session.mgt.SessionManager) 

会话管理。

SessionDAO (org.apache.shiro.session.mgt.eis.SessionDAO) 

数据访问对象,对session进行CRUD。

CacheManager (org.apache.shiro.cache.CacheManager)

缓存管理器。创建和管理缓存,为 authentication, authorization 和 session management 提供缓存数据,避免直接访问数据库,提高效率。

Cryptography (org.apache.shiro.crypto.*)

密码模块,提供加密组件。

Realms (org.apache.shiro.realm.Realm)

可以有1个或多个Realm,可以认为是安全实体数据源,即用于获取安全实体的;可以是JDBC实现,也可以是LDAP实现,或者内存实现等等;由用户提 供;注意:Shiro不知道你的用户/权限存储在哪及以何种格式存储;所以我们一般在应用中都需要实现自己的Realm。

总结

基础知识宏观了解,掌握全局!

时间: 2024-10-11 03:41:18

Apache shiro集群实现 (一) shiro入门介绍的相关文章

【转】Apache shiro集群实现 (一) shiro入门介绍

近期在ITOO项目中研究使用Apache shiro集群中要解决的两个问题,一个是Session的共享问题,一个是授权信息的cache共享问题,官网上给的例子是Ehcache的实现,在配置说明上不算很详细,我在我们的项目中使用的是nosql(Redis)替代了ehcache做了session和cache的存储,接下来从shiro.Cas.redis.session等等基础知识.基本原理集成的角度来不断的深入分析,系列文章篇幅很长,很丰富,尽请期待! Apache shiro集群实现 (一) sh

Apache shiro集群实现 (六)分布式集群系统下的高可用session解决方案---Session共享

Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro Authentication) Apache shiro集群实现 (四)shiro授权(Authentication)--访问控制 Apache shiro集群实现 (五)分布式集群系统下的高可用session解决方案 Apache shiro集群实现 (六)分布式集群系统下的高可用session

Apache shiro集群实现 (七)分布式集群系统下---cache共享

Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro Authentication) Apache shiro集群实现 (四)shiro授权(Authentication)--访问控制 Apache shiro集群实现 (五)分布式集群系统下的高可用session解决方案 Apache shiro集群实现 (六)分布式集群系统下的高可用session

(apache+tomcat集群+memcached番外篇)单台tomcat的session信息的2种持久化方式

为什么要实现搭建tomcat集群环境呢?主要因为单个tomcat无论从吞吐量和并发数上,会达到一定的极限.如果访问量超过单个tomcat的承受能力的话,tomcat一般要么拒绝提供服务,要么直接宕掉.所以,必须要依靠tomcat集群技术.举个最简单的例子,拿"送快件"比喻,如果一个人,5分钟送一件,一小时之内,送10个,一个人完全能胜任这项工作.假设现在到了双十一,要求1小时,送100个, 那怎么办?只能安排更多的人加入"送快件"这项工作中来.这其实和集群一个道理.

Apache Hadoop集群离线安装部署(三)——Hbase安装

Apache Hadoop集群离线安装部署(一)--Hadoop(HDFS.YARN.MR)安装:http://www.cnblogs.com/pojishou/p/6366542.html Apache Hadoop集群离线安装部署(二)--Spark-2.1.0 on Yarn安装:http://www.cnblogs.com/pojishou/p/6366570.html Apache Hadoop集群离线安装部署(三)--Hbase安装:http://www.cnblogs.com/po

Apache+Tomcat集群配置

本文Apache+Tomcat集群配置 基于最新的Apache和Tomcat,具体是2011年4月20日最新的Tomcat和Apache集群和负载均衡配置. 准备环境 Apache[下载地址] 企业框架源码 Apache是http服务器,我们利用其对Tomcat进行负载均衡.目前最新版本为2.2.17,下载地址为http://httpd.apache.org/download.cgi#apache22.如下图: 目前已经出现Apache2.3.11,但是为beta版本,所以没有使用. 下载后直接

【译】调优Apache Kafka集群

今天带来一篇译文"调优Apache Kafka集群",里面有一些观点并无太多新颖之处,但总结得还算详细.该文从四个不同的目标出发给出了各自不同的参数配置,值得大家一读~ 原文地址请参考:https://www.confluent.io/blog/optimizing-apache-kafka-deployment/ ========================================== Apache Kafka是当前最好的企业级流式处理平台.把你的应用程序链接到Kafka

Apache + Tomcat集群配置详解 (1)

一.软件准备 Apache 2.2 : http://httpd.apache.org/download.cgi,下载msi安装程序,选择no ssl版本 Tomcat 6.0 : http://tomcat.apache.org/download-60.cgi,下载Tomcat 6.0.18 zip文件 注意:由于Apache和Tomcat项目与集群相关的模块均处于持续发展和优化过程中,因此笔者不保证本文配置方法对所有Apache和Tomcat版本均适用. 二.软件安装 把Apache安装为运

Apache + Tomcat集群配置详解

Apache + Tomcat集群配置详解 一.软件准备 Apache 2.2 : http://httpd.apache.org/download.cgi,下载msi安装程序,选择no ssl版本 Tomcat 6.0 : http://tomcat.apache.org/download-60.cgi,下载Tomcat 6.0.18 zip文件 注意:由于Apache和Tomcat项目与集群相关的模块均处于持续发展和优化过程中,因此笔者不保证本文配置方法对所有Apache和Tomcat版本均