美文网首页
spring security

spring security

作者: 光小月 | 来源:发表于2019-10-20 09:34 被阅读0次

由于之前看过security,并且练习过对应的demo ,以及实现用户的验证与鉴权, 实现用户角色权限的动态配置,但是之前的代码没写对应的博客,也找不到对应的code了,这里重新记录一下,省的自己忘记了。

Spring Security的功能原理:

验证和鉴权

验证和鉴权

spring security 动态拦截器验证机制

    spring security 中加密的方式是如何的
    
    正常流程走,一般验证密码需要走
    1. UsernamePasswordAuthenticationFilter.attemptAuthentication(),会调用AuthenticationManager
    .authenticate(usernamePasswordAuthenticationToken)方法,
    2. AuthenticationManager的实现类providerManager,  会调用
    providerManger.authenticate(authentication), 里面会调用 List<AuthenticationProvider> providers, 多个调用providers,
    3. 每个provider会调用方法authenticate(authentication), authenticationProvider实现类AbstractUserDetailsAuthenticationProvider,
    它会调用方法authenticate(authentication),会调用retrieveUser(username, UsernamePasswordAuthenticationToken), 
    4. 会调用继承类daoAuthenticationProvider.retrieveUser方法,会调用getUserDetailsService().loadUserByUsername(username),
    上面这个是用于存储user信息与权限信息,
    5. 在类AbstractUserDetailsAuthenticationProvider调用authenticate(authentication)中还需要调用additionalAuthenticationChecks(UserDetails, UsernamePasswordAuthenticationToken), 主要是验证密码的, 会调用
    daoAuthenticationProvider.additionalAuthenticationChecks()方法,会调用passwordEncoder.isPasswordValid(userDetails.getPassword(),
    presentedPassword, salt),
    6. 主要看passwordEncoder的实现类,
    这个实现类在configure(AuthenticationManager)配置userDetailsService和passwordEncoder。
    passwordEncoder的实现类有两种类,
        一种是org.springframework.security.authentication.encoding.PasswordEncoder
        另一种是org.springframework.security.crypto.password.PasswordEncoder, 
        authentication.****.passwordEncoder的实现有PlaintextPasswordEncoder、Md5PasswordEncoder、MessageDigestPasswordEncoder、
    LdapShaPasswordEncoder等等,这些类中有一个isPasswordValid方法,用于验证密码, 
    crypto.*****.PasswordEncoder的实现有BCryptPasswordEncoder、StandardPasswordEncoder, 
    主要有两个方法encode(rawPassword)、matches(rawpassword, encodedPassword), 
    encode主要是用于对密码进行加密,matches主要是对密码进行对比
    
试一下无encode会如何, 还是成功登录

https://zhuanlan.zhihu.com/p/47224331

相关文章

网友评论

      本文标题:spring security

      本文链接:https://www.haomeiwen.com/subject/gufomctx.html