`
zm2011
  • 浏览: 38959 次
社区版块
存档分类
最新评论

spring security表单认证过程

阅读更多
表单认证过程
Spring security的表单认证过程是由org.springframework.security.web.authentication. UsernamePasswordAuthenticationFilter类中实现。而在spring security3.0之前是在AuthenticationProcessingFilter类中实现的。
在UsernamePasswordAuthenticationFilter中的参数:
public static final String SPRING_SECURITY_FORM_USERNAME_KEY = "j_username";//用户输入的用户名
    public static final String SPRING_SECURITY_FORM_PASSWORD_KEY = "j_password";//用户输入的密码
public static final String SPRING_SECURITY_LAST_USERNAME_KEY = "SPRING_SECURITY_LAST_USERNAME";
private boolean postOnly = true;//指定是不是由Post提交,而此类是不支持post提交的

当过滤器链执行到UsernamePasswordAuthenticationFilter时会调用其父类AbstractAuthenticationProcessingFilter的doFilter方法。在这个方法中首先执行requiresAuthentication方法,判断此uri是不是j_spring_security_check,如果不是则判断不是认证操作,如果是则取得用户名和密码进行认证。AbstractAuthenticationProcessingFilter会调用UsernamePasswordAuthenticationFilter的attemptAuthentication方法进行验证,如果验证成功则放回一个经过认证的Authentication对象。

进行认证时会取得提供管理ProvicerMnager,并执行其doAuthenticate方法,利用认证提供者类进行认证。
第一个认证提供者类是:
org.springframework.security.authentication.AnonymousAuthenticationProvider,此类不提供认证
第二个认证提供者类是:
org.springframework.security.authentication.dao.DaoAuthenticationProvider
主要的认证操作是在DaoAuthenticationProvider中执行的。首先DaoAuthenticationProvider的父类执行authenticate方法。这个方法需要一个根据用户名获得的Authentication对象,authenticate方法首先在缓冲中判断有没有此用户,如果没有则执行DaoAuthenticationProvider的retrieveUser方法,这个方法通过配置文件中配置的UserDetails执行其loadUserByUsername返回一个UserDetails对象。之后在DaoAuthenticationProvider的additionalAuthenticationChecks方法对返回的UserDetails通过PlaintextPasswordEncoder类中的isPasswordValid方法进行验证。
如果以上过程没有抛出异常,则为认证成功。
分享到:
评论

相关推荐

    SpringSecurity.pdf

    Spring Security提供了丰富的认证机制,支持多种认证方式,包括但不限于表单认证、LDAP认证、CAS认证等。认证成功后,用户的身份会被标记为已认证,然后系统根据用户的权限来进行授权,授权是指决定一个已认证的用户...

    springSecurity双模认证

    一旦用户提交表单,Spring Security将处理认证过程,包括凭证的哈希存储和比较,以及失败时的重定向策略。 3. **Spring Security 配置**: 在Spring Security中实现双模认证需要对配置进行适当设置。这可能涉及到...

    Spring Security 资料合集

    - **认证**:Spring Security 提供了多种认证机制,包括基于表单的身份验证、HTTP基本认证、OAuth2等。用户可以通过配置自定义认证提供者来实现特定的认证流程。 - **授权**:授权是控制用户访问应用资源的过程。...

    spring security 完整项目实例

    Spring Security支持基于表单的身份验证,也支持OAuth2和其他现代认证协议。 免登录功能,即Remember-Me服务,允许用户在一段时间内无须反复登录。这通过RememberMeServices接口实现,通常使用Token-Based策略,将...

    SpringSecurity学习总结源代码

    SpringSecurity是Java开发中用于构建安全Web应用的框架,它提供了强大的身份验证、...在学习过程中,分析提供的源代码和示例将有助于深入理解SpringSecurity的工作原理,并能帮助你在实际项目中有效地应用这些知识。

    spring spring security2.5 jar

    1. **认证**:这是验证用户身份的过程,Spring Security提供了多种认证方式,如基于表单的登录、HTTP基本认证、JWT(JSON Web Tokens)等。在2.5版本中,可能会使用`UserDetailsService`接口来查询用户信息,以及`...

    spring-security cookie认证

    Spring Security 是一个强大的安全框架,用于Java和Spring应用程序。它为Web应用提供了全面的安全解决...在实际开发中,结合文件"springsecurity"中的示例代码,可以更好地理解和实践Spring Security的Cookie认证功能。

    精彩:Spring Security 演讲PPT

    1. **认证机制**: Spring Security 支持多种认证方式,如表单认证、HTTP基本认证、OAuth2等。开发者可以根据实际需求选择合适的认证策略。 2. **授权机制**: 提供了灵活的授权模型,可以基于用户的角色来定义访问...

    最详细Spring Security学习资料(源码)

    身份验证:Spring Security支持多种身份验证方式,包括基本认证、表单登录、LDAP认证、OAuth等,同时也支持自定义的认证方式。 授权:Spring Security提供了细粒度的授权机制,可以根据角色、权限进行访问控制。...

    spring-security 官方文档 中文版

    - Spring Security 的验证机制允许开发者自定义认证过程,包括用户凭证的检查和存储。 - **直接设置 SecurityContextHolder 的内容**:允许在特定情况下直接设置用户的 Authentication 信息,从而绕过常规的身份...

    SpringBoot+SpringSecurity处理Ajax登录请求问题(推荐)

    SpringBoot+SpringSecurity处理Ajax登录请求问题 SpringBoot+SpringSecurity处理Ajax登录请求问题是SpringBoot开发中的一個常见问题,本文将详细介绍如何使用SpringBoot+SpringSecurity处理Ajax登录请求问题。 ...

    Spring Security 3.pdf

    Spring Security 提供了多种认证机制,如基于表单的登录、HTTP基本认证、OAuth2等。`AbstractAuthenticationProcessingFilter`是处理用户提交的认证信息的主要过滤器。 3. **Authorization**: 授权决定了用户可以...

    springSecurity 实现传参

    首先,让我们了解Spring Security的基本工作流程。Spring Security通过过滤器链处理HTTP请求,其中最重要的过滤器是`UsernamePasswordAuthenticationFilter`,它负责处理登录尝试。当用户尝试登录时,这个过滤器会...

    SpringSecurity素材.rar

    1. **SpringSecurity简介**:首先会介绍SpringSecurity的基本概念和架构,包括它如何通过层层过滤器保护Web应用,以及它提供的主要组件如Authentication(认证)和Authorization(授权)。 2. **配置SpringSecurity...

    Spring Security简单Demo

    **Spring Security简介** ...Spring Security提供了多种认证方式,如基于表单的登录、HTTP基本认证、OAuth2等。 3. **Authorization**: 授权是决定用户可以访问哪些资源。Spring Security支持角色基

    spring security3.1.3 和 spring security3.0.0

    Spring Security是Spring生态体系中的一个核心组件,主要负责应用程序的安全性,包括认证、授权和访问控制。本话题将深入探讨Spring Security的3.0.0和3.1.3两个版本,这两个版本都是该框架历史上的重要里程碑。 ...

    自定义Spring Security的身份验证失败处理方法

    自定义Spring Security的身份验证失败处理方法 在 Spring Security 中,身份验证失败处理方法是一个非常重要的组件,它能够帮助我们处理身份验证失败的情况。然而,默认的身份验证失败处理方法并不总是能够满足我们...

Global site tag (gtag.js) - Google Analytics