gpt4 book ai didi

grails - Grails和Spring安全性:一段时间后密码无效?

转载 作者:行者123 更新时间:2023-12-02 14:41:07 25 4
gpt4 key购买 nike

我正在尝试将旧的Grails应用程序从AppFog迁移到Linode服务器。我迁移了代码和MYSQL数据库,但无法使用旧凭据登录。

由于某种原因,我怀疑我忘记了密码,因此我只是直接从数据库中删除了我的用户,让Bootstrap.groovy用已知的密码创建了一个新用户,因此我设法再次登录。

第二天,当我尝试再次登录时,收到了wrong credentials消息,因此我查看了数据库并验证了哈希密码仍然相同。我重复删除用户和Bootstrap 过程,并注意到对于相同的密码,密码哈希与上一个不同。

同样,我设法通过GUI登录,甚至(通过GUI)更新其他用户的密码(Bootstrap.groovy中的用户具有管理员角色)。我验证了数据库中所有密码哈希的更新,并且我验证了通过GUI登录的每个帐户,一切都很好。

今天早上,当我尝试登录该应用程序时,我昨晚验证的多个帐户再次被拒绝。

我唯一注意到的不同是哈希密码的格式:以前它是字符和数字的序列,但是现在它总是以$2a$开头并包含特殊字符。

我注意到很少有论坛和发布会提到使用spring-security-gui可能会导致密码的两次哈希,但是我没有使用该插件。

这是我正在使用的(相关)插件的列表:

  • tomcat:7.0.52.1
  • 休眠:3.6.10.9
  • 数据库迁移:1.3.8“
  • spring-security-core:2.0-RC4“

  • 我只是注意到旧版本的应用程序正在使用 spring-security-core:1.2.7.3,而最新版本的应用程序正在使用 2.0-RC4(我在迁移之前更新了一些过时的插件)

    更新:
    不幸的是,问题仍然存在。我引导了用户,并确认密码以“sha格式”散列。我可以使用该用户登录并更改其他用户的密码。我验证了所有密码都已在数据库中散列。我可以与重置密码(包括引导密码)的每个用户一起登录。一天之后(大约),我无法使用任何用户先前使用过的credentails重新登录。我检查了数据库和密码哈希是否与以前相同。 tomcat,mysql或syslog日志中没有任何内容。同一应用程序在AppFog上运行了一年以上,没有重新启动,并且没有发现问题。我不确定100%是否在AppFog站点上使用了哪个 Spring 安全性插件版本(旧版维护),但是,唯一更改的是该插件的版本(如果以前未使用过)。没有后台作业可以触发此行为(例如,user.save()调用),因此我不知道可能出什么问题或需要设置什么。

    最佳答案

    Config.groovy中设置以下两个属性

    grails.plugin.springsecurity.password.algorithm = "SHA-256"
    grails.plugin.springsecurity.password.hash.iterations = 1

    这也将允许您使用旧密码登录。 Spring Security 1.x使用 SHA-256,但是新的Spring Security 2.x现在使用 bcrypt算法。

    http://grails-plugins.github.io/grails-spring-security-core/v2/guide/newInV2.html

    关于grails - Grails和Spring安全性:一段时间后密码无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34219124/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com