一、什么是Shiro
Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能:
-
认证 - 用户身份识别,常被称为用户“登录”;
-
授权 - 访问控制;
-
密码加密 - 保护或隐藏数据防止被偷窥;
-
会话管理 - 每用户相关的时间敏感的状态。
对于任何一个应用程序,Shiro都可以提供全面的安全管理服务。并且相对于其他安全框架,Shiro要简单的多。
二、Shiro的架构介绍
首先,来了解一下Shiro的三个核心组件:Subject, SecurityManager 和 Realms. 如下图:
Subject:
即“当前操作用户”。但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。但考虑到大多数目的和用途,你可以把它认为是Shiro的“用户”概念。
Subject代表了当前用户的安全操作,SecurityManager则管理所有用户的安全操作。
SecurityManager:
它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。
Realm:
Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。
从这个意义上讲,Realm实质上是一个安全相关的DAO:它封装了数据源的连接细节,并在需要时将相关数据提供给Shiro。当配置Shiro时,你必须至少指定一个Realm,用于认证和(或)授权。配置多个Realm是可以的,但是至少需要一个。
Shiro内置了可以连接大量安全数据源(又名目录)的Realm,如LDAP、关系数据库(JDBC)、类似INI的文本配置资源以及属性文件等。如果缺省的Realm不能满足需求,你还可以插入代表自定义数据源的自己的Realm实现。
Shiro完整架构图:
除前文所讲Subject、SecurityManager 、Realm三个核心组件外,Shiro主要组件还包括:
Authenticator :认证就是核实用户身份的过程。这个过程的常见例子是大家都熟悉的“用户/密码”组合。多数用户在登录软件系统时,通常提供自己的用户名(当事人)和支持他们的密码(证书)。如果存储在系统中的密码(或密码表示)与用户提供的匹配,他们就被认为通过认证。
Authorizer :授权实质上就是访问控制 - 控制用户能够访问应用中的哪些内容,比如资源、Web页面等等。
SessionManager :在安全框架领域,Apache Shiro提供了一些独特的东西:可在任何应用或架构层一致地使用Session API。即,Shiro为任何应用提供了一个会话编程范式 - 从小型后台独立应用到大型集群Web应用。这意味着,那些希望使用会话的应用开发者,不必被迫使用Servlet或EJB容器了。或者,如果正在使用这些容器,开发者现在也可以选择使用在任何层统一一致的会话API,取代Servlet或EJB机制。
CacheManager:对Shiro的其他组件提供缓存支持。
三、参考资料
http://shiro.apache.org/10-minute-tutorial.html:10分钟入门指南
http://shiro.apache.org/java-authentication-guide.html:Apache Shiro 授权 入门
http://shiro.apache.org/java-authorization-guide.html:Apache Shiro 认证 入门
http://shiro.apache.org/reference.html:Apache Shiro参考手册
http://blog.csdn.net/peterwanghao
相关推荐
Apache Shiro 是一个强大且易用的 Java 安全框架,它提供了认证、授权、加密和会话管理功能,简化了开发人员处理安全问题的过程。本参考手册主要分为以下几个部分,详细介绍了 Apache Shiro 的各个方面。 1. **...
Apache Shiro 是一个强大且易用的 Java 安全框架,提供身份认证、授权、会话管理和加密等全面的安全服务。对于开发者来说,通过学习 Shiro 的源码,可以深入理解其内部工作原理,提高安全编程的能力。在这个 Shiro...
例如,Apache HttpClient库可以用于安全的HTTPS通信,Apache Shiro是一个轻量级的安全框架,可以与Spring Security协同工作,提供身份验证、授权等功能。 总的来说,这个项目可能涉及到Java后端开发中的许多安全...
- **Apache Shiro**:一个强大且易用的Java安全框架,它提供了一整套的安全服务,包括认证、授权、加密和会话管理等。Shiro的架构简单灵活,易于与其他框架集成。 #### 九、服务端验证Hibernate Validator - **...
Spring Security或者Apache Shiro可以提供身份验证和授权功能,保护应用的安全。 15. **前端技术**: 项目可能包含前端部分,使用HTML、CSS和JavaScript,配合React、Vue或Angular等现代前端框架构建用户界面。 ...
6. **安全**:OAuth2、JWT令牌、HTTPS、SSL/TLS加密,以及Spring Security或Apache Shiro等安全框架的使用。 7. **DevOps**:Git版本控制、持续集成/持续部署(CI/CD)流程,如Jenkins、Docker容器化和Kubernetes...
这部分可能会涉及到Spring Security或者Apache Shiro等安全框架,通过设置权限控制、加密算法等方式保障系统安全。 至于部分源代码,虽然没有具体的文件内容,但我们可以推测其中可能包含游戏逻辑处理、网络通信...
Spring Security和Apache Shiro等第三方库提供了更高级的安全解决方案。 9. **性能优化**:Java的性能监控和调优工具,如JVisualVM和JMeter,可以帮助识别和解决性能瓶颈。 10. **微服务架构**:近年来,微服务已...
Java提供了如Spring Security和Apache Shiro等安全框架,用于处理认证、授权和加密等安全问题。理解并实施这些机制是构建健壮系统的必要步骤。 总结来说,"Architecture-Logicielle"涵盖了软件设计的各个方面,...
shiro是apache的一个开源框架,是一个权限管理的框架,实现 用户认证、用户授权 传统使用URL拦截的时候,要将所有的URL都配置起来,繁琐、不易维护 而我们的Shiro实现系统的权限管理,有效提高开发效率,从而...
10. **安全性**:考虑到在线应用的安全性,项目可能包含了用户认证和授权机制,如使用Spring Security或Apache Shiro框架来保护敏感数据和操作。 综上所述,这个基于Java的在线地图浏览模块结合了Java编程、GIS技术...
系统设计上,可能遵循了SOA(Service-Oriented Architecture)服务化思想,将各个功能模块封装为独立的服务,通过服务接口进行通信,增强了系统的可扩展性和灵活性。分布式缓存如Redis也可能被用来加速数据读取,...
14. **安全框架与库**:如Spring Security、Apache Shiro等,提供高级的安全管理功能,简化了安全代码的编写。 15. **代码审计**:定期进行代码审查,查找并修复潜在的安全问题。 Java安全性编程指南(PDG)可能涵盖...
在"CoA_Lab"中,可能有实现这些功能的示例代码,比如使用Spring Security或Apache Shiro等库。 综上所述,"CoA_Lab"可能是一个深入探讨Java安全性的实验项目,涵盖了认证、授权、加密和网络安全等多个方面。参与者...
11. **Java安全框架**:了解Apache Shiro、Spring Security等安全框架,以及如何利用它们增强应用的安全性。 通过深入学习这些Java安全相关的知识点,开发者可以构建更安全的应用程序,减少漏洞,并提高系统的整体...
9. **安全性**:考虑到处理敏感的员工数据,HRSystem必须遵循数据保护法规,可能采用了HTTPS加密通信,使用Spring Security或Apache Shiro等框架进行权限管理。 10. **持续集成/持续部署(CI/CD)**:项目可能采用了...
2. 安全控制:Spring Security或Apache Shiro实现用户认证与授权,保护系统安全。 3. 消息队列:使用RabbitMQ或Kafka实现消息队列,处理高并发场景下的请求,提高系统响应速度。 五、服务集成 1. 验证码服务:...
Java的安全框架如Spring Security或Apache Shiro用于实现用户认证和授权,防止未授权访问。同时,HTTPS协议保证数据传输的安全性。 6. **测试与持续集成**: 使用JUnit进行单元测试,Mockito模拟依赖对象,保证...