Java中的安全框架通常是指解决Web应用安全问题的框架,如果开发Web应用时没有使用安全框架,开发者需要自行编写代码增加Web应用安全性。自行实现Web应用的安全性并不容易,需要考虑不同的认证和授权机制、网络关键数据传输加密等多方面的问题,为此Web应用中通常会选择使用一些成熟的安全框架,这些安全框架基本都提供了一套Web应用安全性的完整解决方案,以便提升Web应用的安全性。 Java中常用的安全框架有Spring Security和Shiro,这两个安全框架都提供了强大功能,可以很容易实现Web应用的很多安全防护。下面对这两个安全框架的特点进行讲解。
1.Spring Security
Spring Security是Spring生态系统中重要的一员,是一个基于AOP思想和Servlet过滤器实现的安全框架,它提供了完善的认证机制和方法级的授权功能,是一款非常优秀的权限管理框架。Spring Security伴随着Spring生态系统不断修正、升级,使用Spring Security 减少了为企业系统安全控制编写大量重复代码的工作,在Spring Boot项目中使用Spring Security十分简单。
使用Spring Security可以很方便地实现Authentication(认证) 和 Authorization(授权),其中认证是指验证用户身份的过程,授权是指验证用户是否有权限访问特定资源的过程。Spring Security在架构上将认证与授权分离,并提供了扩展点。
Spring Security具有以下的特点。
灵活:Spring Security 提供了一系列可扩展的模块,可以根据具体需求进行选择和配置。
安全:Spring Security 集成了一系列安全措施,包括 XSS ( Cross-Site Scripting ,跨站脚本)攻击防范、CSRF 攻击防范、点击劫持攻击防范等。
易用:Spring Security 提供了一系列快捷配置选项,可以使开发人员轻松地实现认证和授权等功能。
社区支持:Spring Security作为Spring 生态系统的一部分,与Spring无缝整合,并且得到了社区广泛的支持和更新维护。
2.Shiro
Shiro是apache旗下一个开源框架,它将软件系统的安全认证相关功能抽取出来,实现用户身份认证,授权、加密、会话管理等功能,组成了一个通用的安全认证框架。
Shiro具有如下特点。
易于理解的 Java Security API。
简单的身份认证,支持LDAP,JDBC 等多种数据源。
支持对角色的简单鉴权,也支持细粒度的鉴权。
支持一级缓存,以提升应用程序的性能。
内置的基于 POJO 企业会话管理,适用于Web以及非Web的环境。
不跟任何的框架或者容器捆绑,可以独立运行。
不管Spring Security还是Shiro,在进行安全管理的过程中都涉及权限管理的两个重要概念:认证和授权。权限管理是指根据系统设置的安全规则或者安全策略,用户可以访问且只能访问自己被授权的资源。
实现权限管理通常需要三个对象,分别为用户、角色、权限,这三个对象的说明如下。
用户:主要包含用户名、密码和当前用户的角色信息,可以实现认证操作。
角色:主要包含角色名称、角色描述和当前角色拥有的权限信息,可以实现授权操作。
权限:权限也可以称为菜单,主要包含当前权限名称、url地址等信息,可以实现动态展示菜单。