Spring Security 自定义登录认证

Spring Security 自定义登录认证(扩展多种方式)

https://gitee.com/markix/spring-security-multiple-auth

自定义登录认证

  • 用户名+密码
  • 工号+密码
  • 手机号+验证码
  • 邮箱+验证码

核心组件

  • NameAuthProcessor 用户名+密码认证
  • NoAuthProcessor 工号+密码认证
  • EmailAuthProcessor 邮箱+验证码认证
  • PhoneAuthProcessor 手机号+验证码认证

封装成一个通用框架

spring-security-login-extension

实现思路

  • 自定义AuthenticationFilter 提供认证接口,用于构建自定义AuthenticationToken,通过自定义AuthenticationProvider对自定义AuthenticationToken进行认证
  • 将 Filter 和 Provider 组装到过滤器链中,使之生效。
  • 放行必要的路径

自定义认证抽象层

  • AuthProcessor:认证处理器接口,用于抽象不同认证方式!
  • MultipleAuthenticationFilter:认证过滤器,维护多个认证处理器 List,支持多种认证
  • MultipleAuthenticationProvider:认证提供者,实际上将认证代理给 AuthProcessor
  • MultipleAuthenticationFilterConfigurer:自定义认证配置器,需要在 SecurityConfiguration 应用!

示例

每种认证方式只需要实现 AuthProcessor 接口

spring-security-login-extension-samples 项目