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

打印 上一主题 下一主题

主题 954|帖子 954|积分 2862


Spring Security 是一个功能强盛且高度可定制的 Java 安全框架,用于保护基于 Spring 的应用程序。它提供全面的安全服务,包括认证、授权、防止 CSRF 攻击、会话管理等。通过灵活的配置选项和多种认证机制,Spring Security 帮助开辟者构建安全、结实的应用体系,支持从简朴的表单登录到复杂的 OAuth2 和 OpenID Connect 认证。
   肖哥弹架构 跟大家“弹弹” 框架注解使用,必要代码关注
  欢迎 点赞,关注,批评。
  关注公号Solomon肖哥弹架构获取更多精彩内容
  历史热门文章



  • 28个验证注解,通过业务案例让你精通Java数据校验(收藏篇)
  • Java 8函数式编程全攻略:43种函数式业务代码实战案例剖析(收藏版)
  • 69 个Spring mvc 全部注解:真实业务使用案例分析(必须收藏)
  • 24 个Spring bean 全部注解:真实业务使用案例分析(必须收藏)
  • MySQL索引完全手册:真实业务图文讲解17种索引运用本领(必须收藏)
  • 一个项目代码讲清晰DO/PO/BO/AO/E/DTO/DAO/ POJO/VO
一、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模块:

    • OAuth2 Login: 表示 OAuth2 登录流程,涉及授权服务器、资源服务器和客户端应用。
    • Authorization Server: 授权服务器。
    • Resource Server: 资源服务器。
    • Client App: 客户端应用。


  • 方法安全模块:

    • MethodSecurityInterceptor: 方法安全拦截器,用于保护方法调用。
    • DefaultMethodSecurityExpressionHandler: 默认方法安全表达式处理惩罚器。
    • Global Method Security Configuration: 全局方法安全配置。


  • 安全过滤器链模块:

    • 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举行加密。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

何小豆儿在此

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表