首页 > 其他分享 >Spring Security 4大核心架构图与21种安全验证策略场景分析

Spring Security 4大核心架构图与21种安全验证策略场景分析

时间:2024-09-10 18:48:33浏览次数:1  
标签:21 安全 Spring 用户 认证 访问 Security 架构图

一、Spring Security 架构设计图

二、Spring Security 架构流程设计图

三、Spring Security 4大架构模块图

四、21种安全验证策略

原创 Solomon肖哥弹架构

Spring Security 是一个功能强大且高度可定制的 Java 安全框架,用于保护基于 Spring 的应用程序。
它提供全面的安全服务,包括认证、授权、防止 CSRF 攻击、会话管理等。
通过灵活的配置选项和多种认证机制,Spring Security 帮助开发者构建安全、健壮的应用系统,支持从简单的表单登录到复杂的 OAuth2 和 OpenID Connect 认证。

一、Spring Security 架构设计图

【用户请求】: 用户发起对应用程序的请求。

【Security Filter Chain (安全过滤器链)】: 请求首先经过 Spring Security 的过滤器链。

【认证过程】: 请求被 AuthenticationManager 处理,它委托给一个或多个 AuthenticationProvider 进行认证。

【认证成功/失败】: 认证成功则进行授权决策,失败则由 AuthenticationEntryPoint 处理,如重定向到登录页面或返回错误响应。

【Authorization Decision (授权决策)】: AccessDecisionManager 根据 Voter 的投票结果来决定是否授权用户访问资源。

【访问资源】: 授权成功后,用户可以访问受保护的资源。

【方法安全检查】: 在访问方法之前,进行方法级别的安全检查,确保用户对方法具有足够的权限。

【执行业务逻辑】: 执行应用程序的业务逻辑。

【返回响应给用户】: 处理完业务逻辑后,将响应返回给用户。

核心组件

AuthenticationManager (认证管理器) : 负责整个认证过程。

UserDetailsService (用户服务) : 用于从数据库或其他存储中加载用户详细信息。

AuthenticationProvider (认证提供者) : 负责具体的认证逻辑。

PasswordEncoder (密码编码器) : 用于密码的编码和验证。

授权组件

AccessDecisionManager (访问决策管理器) : 负责做出最终的访问决策。

Voter (投票器) : 包括 RoleVoter、 PermissionVoter 等,根据用户的角色和权限进行投票

配置组件

Security Configuration (安全配置) : 定义了整个应用程序的安全策略,包括认证、授权和过滤器链的配置。

二、Spring Security 架构流程设计图

  1. 初始化和配置

    配置类: 开发者通过创建配置类来定义安全策略。通常继承自 WebSecurityConfigurerAdapter 或实现 SecurityConfigurer 接口。

    依赖注入: 通过 Spring 的依赖注入机制,将自定义的安全配置注入到 Spring Security 的框架中。

  2. 认证管理器(AuthenticationManager)

    认证请求: 当用户尝试访问受保护的资源时,Spring Security 会拦截请求并要求认证。

    AuthenticationProvider: AuthenticationManager 通过一个或多个 AuthenticationProvider 进行认证,每个 AuthenticationProvider 负责验证不同来源的认证信息(如数据库、LDAP、OAuth2 等)。

    认证成功/失败: 认证成功后,用户信息被存储在 SecurityContextHolder 中;认证失败则抛出异常。

  3. 授权决策管理器(AccessDecisionManager)

    投票器(Voter) : 一旦用户被认证, AccessDecisionManager 会根据一组 Voter 来决定用户是否有权访问特定资源。常见的 Voter 包括 RoleVoter 和 PermissionVoter。

    访问决策: 根据投票器的投票结果, AccessDecisionManager 决定是否授予访问权限。

  4. 安全过滤器链(Security Filter Chain)

    FilterChainProxy: 管理请求的过滤链,确保每个请求都经过一系列安全过滤器的处理。

    HttpSecurity: 配置 URL 模式和对应的安全过滤器,如 UsernamePasswordAuthenticationFilter、 BasicAuthenticationFilter、 CsrfFilter 等。

  5. 认证和授权的实现

    UserDetailsService: 从数据库或其他存储中加载用户详细信息,通常实现 UserDetailsService 接口。

    UserDetails: 包含用户的账号信息、密码、权限等。

  6. 异常处理

    AuthenticationEntryPoint: 处理认证失败的情况,如重定向到登录页面或返回错误响应。

    AccessDeniedHandler: 处理授权失败的情况,如返回 403 禁止访问的响应。

  7. 会话管理

    SessionManagementConfigurer: 配置会话策略,如会话固定保护、会话超时等。

  8. CSRF 保护

    CsrfFilter: 提供跨站请求伪造保护。

  9. OAuth2 和 OpenID Connect

    OAuth2LoginConfigurer: 配置 OAuth2 登录流程,包括授权服务器和资源服务器的设置。

  10. 方法安全

    @PreAuthorize, @Secured: 保护方法级别的安全性,使用注解来限制方法访问。

三、Spring Security 4大架构模块图

OAuth2模块:

    OAuth2Login: 表示 OAuth2 登录流程,涉及授权服务器、资源服务器和客户端应用。

    AuthorizationServer: 授权服务器。

    ResourceServer: 资源服务器。

    ClientApp: 客户端应用。 

方法安全模块:

    MethodSecurityInterceptor: 方法安全拦截器,用于保护方法调用。

    DefaultMethodSecurityExpressionHandler: 默认方法安全表达式处理器。

    GlobalMethodSecurityConfiguration: 全局方法安全配置。 

安全过滤器链模块:

    FilterChainProxy: 管理 Spring Security 的过滤器链。

    SecurityFilterChain: 定义了过滤器链中的各个过滤器。

    HttpSecurity: 用于配置 URL 模式的安全规则。

    WebSecurityConfigurerAdapter: 允许自定义配置安全过滤器链和认证管理器。 

授权模块:

    AccessDecisionManager: 访问决策管理器,负责收集投票器的投票结果并做出最终的访问决策。

    Voter: 投票器,用于访问决策。

    RoleVoter: 角色投票器。

    PermissionVoter: 权限投票器。 

核心认证模块:

    SecurityContextHolder: 持有当前的安全上下文,包括认证信息。

    Authentication: 表示当前用户的认证信息。

    GrantedAuthority: 用户的权限或角色。

    AuthenticationManager: 负责整个认证过程。

    AuthenticationProvider: 具体的认证提供者。

    UserDetailsService: 用于从数据库或其他存储中加载用户信息。

    UserDetails: 包含用户的账号信息、密码、权限等。

四、21种安全验证策略

说明

Spring Security: 核心安全框架,提供了一个可插拔的安全服务框架。

认证方式: 包括各种认证机制,每种机制都可以通过 Spring Security 进行配置和使用。

认证方式

用户名和密码认证: 传统的用户名和密码认证方式。

表单认证: 通过 Web 表单提交认证信息。

HTTP 基本认证: 基于 HTTP 头部的简单认证机制。

HTTP 摘要认证: 提供了一种更加安全的认证方式,通过发送密码的哈希值而非明文。

LDAP 认证: 通过 LDAP 服务器进行认证。

OAuth2: 支持复杂的授权流程。

OpenID Connect: 基于 OAuth 2.0 的身份认证。

客户端证书认证: 使用 SSL/TLS 证书进行认证。

一次性密码认证: 一次性密码认证机制。

JWT 认证: 使用 JSON Web Tokens 进行无状态认证。

SAML 认证: 支持跨域身份认证。

CAS 认证: 集成中央认证服务 (CAS) 进行认证。

预认证: 用于已经通过外部系统认证的情况。

匿名认证: 允许匿名访问。

记住我认证: 提供持久的会话管理。

双因素认证: 结合两种认证因素进行认证。

自定义认证: 开发者自定义的认证逻辑。

方法级安全: 控制方法级别的访问权限。

基于表达式的认证: 使用 Spring 表达式语言进行复杂的认证决策。

基于角色的认证: 基于用户角色的访问控制。

基于权限的认证: 基于用户权限的细粒度访问控制。

组合认证案例

1. 企业级应用的用户登录

需求: 需要确保只有合法用户才能访问企业资源,同时提供额外的安全层。

组合认证方式:

表单认证: 用户通过填写用户名和密码登录。

双因素认证: 在表单认证后,要求用户通过手机短信或电子邮件进行二次验证。

案例: 企业资源管理系统要求用户在登录时输入用户名和密码,然后通过手机接收一次性密码进行二次验证,以确保登录的安全性。

2. 金融服务平台

需求: 需要高度的安全措施来保护用户的财务信息和交易。

组合认证方式:

OAuth2: 使用OAuth2进行用户授权,允许第三方应用安全地访问用户数据。

JWT认证: 用于无状态的API认证,确保每次请求都经过验证。

HTTPS: 通过SSL/TLS证书保护所有通信。

案例: 一个在线银行平台使用OAuth2授权用户连接其账户到第三方金融管理应用,同时使用JWT来验证API请求,所有通信都通过HTTPS进行加密。

3. 多级访问控制的政府网站

需求: 需要对不同类型的用户(公众、注册用户、管理员)实施不同级别的访问控制。

组合认证方式:

角色基础的访问控制: 根据用户的角色(如公众、注册用户、管理员)限制访问。

权限基础的访问控制: 对敏感操作(如数据修改、报告生成)实施更细粒度的权限控制。

记住我认证: 为频繁访问的用户提供便利性,同时确保安全性。

案例: 政府网站允许公众访问基本信息,注册用户可以访问更多服务,而管理员可以进行数据管理和配置。所有用户通过表单认证登录,管理员在执行敏感操作时需要额外的权限验证。

4. 云服务管理平台

需求: 需要确保只有拥有适当凭证的用户才能管理云资源。

组合认证方式:

SAML认证: 用于跨多个域的身份验证。

OAuth2: 用于授权用户访问特定的云服务。

多因素认证: 增加安全性,要求用户在登录时提供第二种认证方式。

案例: 云服务管理平台允许企业用户通过SAML从其企业身份提供者进行身份验证,然后使用OAuth2授权访问特定的云资源,所有登录尝试都要求多因素认证。

5. 健康信息管理系统

需求: 需要确保患者信息的保密性和完整性,同时允许医疗人员快速访问。

组合认证方式:

LDAP认证: 用于从中央目录服务验证医疗人员身份。

基于表达式的认证: 根据用户的工作角色和患者信息的敏感性动态决定访问权限。

HTTPS: 保护所有通信的安全。

案例: 医院的健康信息管理系统使用LDAP来验证医生和护士的身份,然后根据他们的工作角色和患者的保密要求使用基于表达式的认证来控制对患者记录的访问。所有数据传输都通过HTTPS进行加密。

标签:21,安全,Spring,用户,认证,访问,Security,架构图
From: https://www.cnblogs.com/o-O-oO/p/18406280

相关文章

  • Spring Boot 框架:房屋租赁行业的技术革新
    第2章技术介绍2.1相关技术房屋租赁系统是在JSP+MySQL开发环境的基础上开发的。JSP是一种服务器端脚本语言,易于学习,实用且面向用户。全球超过35%的JSP驱动的互联网站点使用JSP。MySQL是一个数据库管理系统,因为它的体积小但速度快,成本低,或者开源受到中小型网站的青睐。因......
  • 房屋租赁系统开发:Spring Boot 技术应用
    第2章技术介绍2.1相关技术房屋租赁系统是在JSP+MySQL开发环境的基础上开发的。JSP是一种服务器端脚本语言,易于学习,实用且面向用户。全球超过35%的JSP驱动的互联网站点使用JSP。MySQL是一个数据库管理系统,因为它的体积小但速度快,成本低,或者开源受到中小型网站的青睐。因......
  • Spring Boot 技术在房屋租赁系统中的应用
    第1章绪论1.1背景及意义系统管理也都将通过计算机进行整体智能化操作,对于房屋租赁系统所牵扯的管理及数据保存都是非常多的,例如人中心、房屋类型管理、房屋信息、预约看房管理、合同信息管理、房屋报修管理、房屋评价管理、我要当房东管理、留言板管理、系统管理等,这给管......
  • 房屋租赁服务智能化:Spring Boot 系统设计
    第2章技术介绍2.1相关技术房屋租赁系统是在JSP+MySQL开发环境的基础上开发的。JSP是一种服务器端脚本语言,易于学习,实用且面向用户。全球超过35%的JSP驱动的互联网站点使用JSP。MySQL是一个数据库管理系统,因为它的体积小但速度快,成本低,或者开源受到中小型网站的青睐。因......
  • Springboot计算机毕业设计校园二手书籍交易平台程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,商家,图书中心,图书类型,公告信息,咨询信息开题报告内容一、研究背景与意义随着互联网技术的飞速发展,网络购物已成为人们日常生活中不可或缺的一部分。在......
  • Springboot计算机毕业设计校园二手市场平台程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,卖家,求购信息,商品分类,商品信息,提现信息,评论信息开题报告内容一、课题意义(一)理论意义随着互联网的快速发展,电子商务已成为人们日常生活的重要组成部......
  • Springboot计算机毕业设计校园二手商品交易平台程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,卖家,商品信息,商品类型,订单信息,留言信息,留言回复开题报告内容一、本课题的研究目的和意义在网络市场日益发达的背景下,电子商务网站如雨后春笋般涌现,极......
  • Spring cloud alibaba面试题
    Springcloudalibaba面试题Nacos1.x作为注册中心的原理?底层基于netty实现。集群数据同步使用distrio协议。Nacos服务领域模型有哪些?模型名称解释Namespace实现环境隔离,默认值public,比方说DEV、SIT、UAT环境。Group一般用来表示某个项目。不同的service可以组......
  • 基于ssm的校园拼车服务系统的设计与实现-附源码211633
    摘 要科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设校......
  • SpringMVC学习笔记
    本笔记基于【尚硅谷新版SSM框架全套视频教程,Spring6+SpringBoot3最新SSM企业级开发】https://www.bilibili.com/video/BV1AP411s7D7?vd_source=a91dafe0f846ad7bd19625e392cf76d8总结资料获取网址:https://www.wolai.com/v5Kuct5ZtPeVBk4NBUGBWFSpringMVC:构建高效表述层框......