• 【Spring Security 系列】(一)理论篇


    我们知道Spring Security是一个应用安全框架,能提供认证、授权能力。追本溯源,想要知道SpringSecurity各种设计和实现,最好是从源头出发,也就是了解应用安全框架需要做什么。

    应用安全框架的核心问题

    谈到应用安全框架就离不开两个核心功能:认证(Authentication)、授权(Authorization)。

    认证(Authentication)

    解决 “你是谁?” 的问题。
    常用的认证方式就是通过用户名和密码,这里就衍生出几个问题:
    用户输入用户名密码后,去哪儿找到已有的用户信息来做验证? 密码总不能明文存储吧!那么,密码如何加密和验证?
    另外,认证成功后做什么? 是返回cookie还是token?
    认证失败后做什么? 是返回401还是重定向到失败页面?
    如何提供认证的接口? 是Filter或者Controller?
    如何提供退出登录接口?
    退出后做什么?

    授权(Authorization)

    解决 “你能干什么?” 的问题。
    为了便于理解,经常又称之为访问控制(Access Control)、鉴权,鉴权的前提那一定得先得到权限信息,这里有两个问题: 如何获取权限信息? 以及 如何判断是否有权限?
    另外,权限不足怎么办? 是返回403还是重定向到失败页面?
    匿名访问怎么办? 是返回403还是重定向到登录页面?

    注意,匿名访问不同于权限不足,匿名访问指的是没有经过认证就访问接口,权限不足指的是用户通过认证了,但是没有访问该接口的权限。

    总结

    小结一下,应用安全框架的核心问题:

    • 如何获取用户信息?

    • 密码如何加密和验证?

    • 认证成功后做什么?

    • 认证失败后做什么?

    • 如何提供认证的接口?

    • 如何提供退出登录接口?退出后做什么?

    • 如何获取权限信息?

    • 如何判断是否有权限?(鉴权)

    • 权限不足怎么办?

    • 匿名访问怎么办?

    注意:应用安全框架本身不会管理用户和权限,只是获取,所以框架一般会设计相关的接口,具体实现由使用者自定义,可以从内存获取、或从数据库获取等等


    end

    源头已经了解了,后面我们将一步步挖掘Spring Security 的设计和实现。欢迎订阅,冲~

  • 相关阅读:
    易基因|深度综述:m6A RNA甲基化在大脑发育和疾病中的表观转录调控作用
    npm安装包卡住问题
    PyTorch语音识别的理论基础——MFCC
    塑料透光率测试可测试塑料部件的透明度和纯度
    Word处理控件Aspose.Words功能演示:使用C#或VB.NET在Word文档中进行邮件合并
    JavaScript基础
    【TDengine】 TDengine时序数据库的快速入门总结
    The 2022 ICPC Asia Xian Regional Contest--C. Clone Ranran
    Eureka架构篇 - 服务发现
    Docker
  • 原文地址:https://blog.csdn.net/qq_31772441/article/details/126214446