• 升级到spring security5遇到的坑-密码存储格式


    遇到的问题 
    将spring security oauth2(包括spring security)升级到最新,代码没有改动,运行项目没有报错,但是页面登陆时报错:There is no PasswordEncoder mapped for the id “null”

    然后一顿百度和google,其中看到两处有帮助的资料: 
    https://www.cnblogs.com/majianming/p/7923604.html 
    https://spring.io/blog/2017/11/01/spring-security-5-0-0-rc1-released

    总的来说就是,人家把spring security的密码存储格式改了,没办法,用人家的东西就要按照人家规定的做,将所有的密码格式改掉吧。

    格式:{id}encodedPassword

    这id是一个标识符,用于查找是哪个PasswordEncoder,也就是你密码加密的格式所对应的PasswordEncoder。encodedPassword是指原始加密后的密码(有点绕,简单来说就是你原来存储的密码)。在id必须在密码的开始,id前后必须加{}。如果id找不到,id则会为空。 
    spring security中的所有默认的密码格式都是在PasswordEncoderFactories这个 类中,可以进入这个类中自行查看。

    注意: 
    1. 前端发送的登陆密码,是不需要为{id}encodedPassword格式的。 
    2. 如果你配置了spring security oauth2

    @Override
        public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
            clients.inMemory().withClient("client").secret("{noop}secret")
                    .authorizedGrantTypes("client_credentials", "password", "refresh_token").scopes("all");
        }
    • 1
    • 2
    • 3
    • 4
    • 5

    代码中的secret也必须{id}encodedPassword格式。

    https://blog.csdn.net/smollsnail/article/details/78934188

    情景:

    在一个后台admin系统中,为了安全用到Spring Security,我开启了in-memory方式(就是登陆后,在内存中先认证,是否内存中写死的账号是否就是用户登录的那个账号,密码),但是又在其后面加入了“从数据库中查找出该账号是否存在”,这种认证方式。

    在这两种方式下,我登录,先输入一个在数据库中存在的账号,显示,正常登录进来。

    又一次登录后,我输入一个在数据库中找不到但是在内存中写死的账号,系统报异常,但是正常登录进来。

    再一次登录后,我输入一个既不在数据库中,也不在内存中的账号,这次,真登录不了了。

    那么,这是不是就证明了,在这两种方式下,默认先去数据库中查找,然后不管成功与否“或上”(||)是否为内存中的账号。

    https://blog.csdn.net/u012582402/article/details/54292488

    解决springsecurity资源权限一次加载,导致角色授资源要重启服务问题

    https://blog.csdn.net/y666666y/article/details/70212064

    https://www.baeldung.com/spring-security-5-default-password-encoder

  • 相关阅读:
    ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第二篇:第一个页面
    HTML5网页录音和压缩,边猜边做..(附源码)
    策划编写一个新的Helper类
    正由另一进程使用,因此该进程无法访问此文件。
    第三方组件引用另一个第三方组件的悲剧
    数据库连接池的计数器设计
    让Ajax更简单
    更新Literacy
    多说
    利用C#自带组件强壮程序日志
  • 原文地址:https://www.cnblogs.com/softidea/p/9551850.html
Copyright © 2020-2023  润新知