SpringSecurity-01-security简介和快速入门


系列文章:
SpringSecurity-02-基于前后端分离和JWT载体的认证授权

1:SpringSecurity简介

Spring Security 是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富。
一般来说中大型的项目都是使用SpringSecurity 来做安全框架。小项目有Shiro的比较多,因为相比与SpringSecurity,Shiro的上手更加的简单。

​ 一般Web应用的需要进行认证授权

认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户

授权:经过认证后判断当前用户是否有权限进行某个操作

​ 而认证和授权也是SpringSecurity作为安全框架的核心功能。

2:快速入门

1:导包

 		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

2:启动

启动springboot工程,security默认的密码会打印在控制台,默认账户为【user】
在这里插入图片描述

3:验证

访问随便一个借口会跳转到springsecurity默认的登录页
在这里插入图片描述
输入账号密码,通过后自动跳转到之前请求的网页
在这里插入图片描述

3:springSecurity的工作流程

SpringSecurity的原理其实就是一个过滤器链,内部包含了提供各种功能的过滤器。这里我们可以看看入门案例中的过滤器。
在这里插入图片描述
​ 图中只展示了核心过滤器,其它的非核心过滤器并没有在图中展示。

  • UsernamePasswordAuthenticationFilter**:负责处理我们在登陆页面填写了用户名密码后的登陆请求。入门案例的认证工作主要有它负责。

  • ExceptionTranslationFilter:**处理过滤器链中抛出的任何AccessDeniedException和AuthenticationException 。

  • FilterSecurityInterceptor:**负责权限校验的过滤器。

4:springsecurity和shiro区别

1. Shiro简介

Apache Shiro是一个强大且易用的Java安全框架。可以实现身份验证、授权、密码学和会话管理。使用Shiro的易于理解的API。您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。

  • Authentication 认证:验证是哪个用户登录

  • Authorization 授权:决定当前登录用户是否有权限去访问受保护的资源

  • Cryptography:通过加密算法保护数据安全。

  • Session Management: 当用户使用你的应用是自身携带的数据。

  • Web Integration: 虽然Shiro是设计用来确保任何基于JVM的应用,但是很多时候是用来保护Web应用。

  • Integrations:可以很好的集成其他的技术和框架。

Shiro三个核心组件:Subject, SecurityManager 和 Realms.

  • subject:主体,可以是用户也可以是程序,主体要访问系统,系统需要对主体进行认证、授权。

  • securityManager:安全管理器,主体进行认证和授权都是通过securityManager进行,是shiro的心脏。

  • realm:域,领域,相当于数据源,通俗意义的DAO层,通过realm存取认证、授权相关数据。

2. SpringSecurity 简介

Spring Security是一个灵活和强大的身份验证和访问控制框架,以确保基于Spring的Java Web应用程序的安全。它是一个轻量级的安全框架,它确保基于Spring的应用程序提供身份验证和授权支持。它与Spring MVC有很好地集成,并配备了流行的安全算法实现捆绑在一起。安全主要包括两个操作“认证”与“验证”(也叫做权限控制)。“认证”是为用户建立一个其声明的角色的过程,这个角色可以一个用户、一个设备或者一个系统。“验证”指的是一个用户在你的应用中能够执行某个操作。在到达授权判断之前,角色已经在身份认证过程中建立了。

划分为以下几块:

Web/Http 安全:这是最复杂的部分。通过建立 filter 和相关的 service bean 来实现框架的认证机制。当访问受保护的 URL 时会将用户引入登录界面或者是错误提示界面。

业务对象或者方法的安全:控制方法访问权限的。

AuthenticationManager:处理来自于框架其他部分的认证请求。

AccessDecisionManager:为 Web 或方法的安全提供访问决策。会注册一个默认的,但是我们也可以通过普通 bean 注册的方式使用自定义的 AccessDecisionManager。

AuthenticationProvider:AuthenticationManager 是通过它来认证用户的。

UserDetailsService:跟 AuthenticationProvider 关系密切,用来获取用户信息的。

3. Shiro和Spring Security比较

(1)Shiro比Spring更容易使用,实现和最重要的理解

(2)Spring Security更加知名的唯一原因是因为品牌名称

(3)“Spring”以简单而闻名,但讽刺的是很多人发现安装Spring Security很难

然而,Spring Security却有更好的社区支持

(4)Apache Shiro在Spring Security处理密码学方面有一个额外的模块

(5)Spring-security 对spring 结合较好,如果项目用的springmvc ,使用起来很方便。但是如果项目中没有用到spring,那就不要考虑它了。

(6) Shiro 功能强大、且 简单、灵活。是Apache 下的项目比较可靠,且不跟任何的框架或者容器绑定,可以独立运行

个人理解: shiro首选 ,上手快 ,控制粒度可糙可细 ,自由度高 ,而springsecurity 比较复杂,与spring 家族结合能力更强,是一个可以放心选择的框架结构。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苍煜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值