Spring Security

概要

Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案

Web 应用的安全性

用户认证(Authentication)和用户授权 (Authorization)两个部分,这两点也是 Spring Security 重要核心功能

用户认证(Authentication)

用户认证指的是:验证某个用户是否为系统中的合法主体,也就是说用户能否访问 该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认 证过程。
通俗点说就是系统认为用户是否能登录

用户授权 (Authorization)

用户授权指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户 所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而有的用户可以 进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的 权限。
通俗点讲就是系统判断用户是否有权限去做某些事情

对比

Spring Security

Spring 技术栈的组成部分
通过提供完整可扩展的认证和授权支持保护你的应用程序

SpringSecurity 特点

  • Spring 无缝整合
  • 全面的权限控制
  • 专门为 Web 开发而设计

    1. 旧版本不能脱离 Web 环境使用<br /> 新版本对整个框架进行了分层抽取,分成了核心模块和 Web 模块。单独 引入核心模块就可以脱离 Web 环境
  • 重量级

    Shiro

    Apache 旗下的轻量级权限控制框架

    Shiro 特点:

  • 轻量级。Shiro 主张的理念是把复杂的事情变简单。针对对性能有更高要求 的互联网应用有更好表现

  • 通用性

    好处:不局限于 Web 环境,可以脱离 Web 环境使用。
    缺陷:在 Web 环境下一些特定的需求需要手动编写代码定制
    常见的安全管理技术栈的组合是这样的:
    • SSM + Shiro
    • Spring Boot/Spring Cloud + Spring Security

    权限管理中的相关概念

    主体

    使用系统的用户或设备或从其他系统远程登录的用户等等。
    简单说就是谁使用系统谁就是主体

    认证

    权限管理系统确认一个主体的身份,允许主体进入系统。简单说就是“主体”证 明自己是谁
    笼统的认为就是以前所做的登录操作

    授权

    将操作系统的“权力”“授予”“主体”,这样主体就具备了操作系统中特定功 能的能力。
    所以简单来说,授权就是给用户分配权限

    执行流程

  1. 设计主体部分进行身份认证
  2. 进行身份认证后,给出认证的凭证
  3. 进行筛选,执行通过的操作,然后进行相应的授权
  4. 通过判定有权限则执行、没有权限就不能执行

    Shiro

    概要

    Apache Shiro 是 Java 的一个安全(权限)框架
    • Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在 JavaSE 环境,也可以用在 JavaEE 环境
    • Shiro 可以完成:认证、授权、加密、会话管理、与Web 集成、缓存 等

    功能简介

  • Authentication:身份认证/登录,验证用户是不是拥有相应的身份;
  • Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限
  • Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有 信息都在会话中
  • Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;
  • Web Support:Web 支持,可以非常容易的集成到Web 环境;
  • Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可 以提高效率Concurrency:Shiro 支持多线程应用的并发验证、
  • Testing:提供测试支持;
  • Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;
  • Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登 录了
    | Shiro | Spring Security | | —- | —- | | 简单、灵活 | 复杂、笨重 | | 可脱离Spring | 不可脱离Spring | | 粒度较粗 | 粒度较细 |