0


Java安全框架

Java安全框架


文章目录


前言

本文将介绍两个常见且强大的安全框架Spring SecurityShiro


一、Spring Security

Spring Security是Spring 家族的一员,它通过提供完整可扩展的认证和授权支持来保护程序。

它还充分利用了Spring IoC(控制反转)、DI(依赖注入)和AOP(面向切面编程)的功能,提供了大量在Spring应用上下文中配置的Bean,为应用系统提供声明式的安全访问控制功能,减少了为系统安全权限控制而编写大量重复代码的工作。

它是一个重量级的安全框架,搭配了流行的安全算法实现。安全控制主要包括“认证”与“授权”两个操作。

  • “认证”是验证确认身份以授予对系统的访问权限,是验证用户凭据以获得用户访问权限的过程。它决定用户是否是他声称的用户。
  • “授权”是确定你是否有权访问资源,是验证是否允许访问的过程。它确定用户可以访问和不访问的内容。

详细可参考Spring Security

二、Shiro

Shiro是Apache 旗下的轻量级权限控制框架。它主张的理念是把复杂的事情变简单,针对有更高要求性能的互联网应用有着更好的表现。

Shiro有着很好的通用性,不局限于Web 环境,但在Web 环境下一些特定的需求需要手动编写代码定制,有一定的代码侵入。

Shiro有着易于理解的 Java Security API、简单的身份认证,支持多种数据源,能对角色的简单的签权,支持细粒度的签权,内置会话管理,简单的加密 API,不跟任何的框架捆绑,可以独立运行。

Shiro的三个核心组件:SubjectSecurityManagerRealms.
Subject:主体,与当前应用交互的任何东西。
所有Subject都会绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager。Subject相当于门户,SecurityManager是执行者;
SecurityManager:安全管理器。所有与安全有关的操作都会与SecurityManager交互,管理着所有Subject。它是Shiro的核心,负责与其它组件进行交互。
Realm:域。Realm类似于安全数据源。Shiro将会从Realm获取安全数据(如用户、角色、权限)。
如果SecurityManager需要验证用户身份,那么它需要从Realm获取相应的用户信息进行比较以确定用户身份是否合法,也需要从Realm得到用户相对应的角色或者权限进行验证用户是否能进行操作。

三、对比

在 Spring Boot 出现之前,Spring Security 虽然已经发展了很久,但因为其使用过于复杂,所以尽管功能比Shiro强大,但使用的并不多,而且一般来说,Shiro的功能足以够一般项目使用。在安全管理这个领域,以往一直是使用 Shiro居多。
自从有了Spring Boot 之后,Spring Boot为Spring Security提供了自动化配置,Spring Security的使用频率才高起来。
因此,常见的安全管理技术栈的组合为:
SSM + ShiroSpring Boot/Spring Cloud + SpringSecurity
但技术栈是通用的,可以任意组合。

1.相同点

  • 认证授权功能
  • 加密功能
  • 会话管理
  • 缓存支持

2.不同点

  • Spring Security是一个重量级的安全管理框架,Shiro则是一个轻量级的安全管理框架
  • Spring Security是Spring家族的一员,能更好地基于Spring家族开发
  • Spring Security功能比Shiro更加丰富、强大
  • Shiro的配置和使用比较简单,Spring Security使用比较复杂;
  • Shiro依赖性低,不需要任何框架和容器,可以独立运行, 而Spring Security依赖Spring容器;
  • Shiro不局限于Web环境中,它可以工作在任何应用环境中。

总结

本文简单地介绍了SpringSecurity和Shiro两种安全框架的特点以及其区别。

标签: java spring boot

本文转载自: https://blog.csdn.net/qq905855661/article/details/124088430
版权归原作者 追风_CJJ 所有, 如有侵权,请联系我们删除。

“Java安全框架”的评论:

还没有评论