【问题标题】:How can I validate the encrypted (hashed) password in Liferay user_ table without Liferay services?如何在没有 Liferay 服务的情况下验证 Liferay user_ 表中的加密(散列)密码?
【发布时间】:2020-01-11 13:04:43
【问题描述】:

我要从 Liferray 6.1 迁移到自定义应用程序。我希望现有用户能够使用现有 Liferay 凭据登录新应用程序。当用户第一次登录时(在新系统上还没有帐户),我希望能够对照 Liferay 的user_ 表检查他的密码,并在成功时在新系统中创建一个帐户。 Liferay 将不会无处运行,因此我无法为此目的使用 Liferay 的服务。

问题是如何将用户提供的密码与存储在user_ 表中的加密密码进行比较?

我尝试在我的新应用程序中添加portal-service.jar,但发生了一些错误,例如:

com.liferay.portal.kernel.log.Jdk14LogImpl error
SEVERE: BeanLocator is null

【问题讨论】:

  • 你能解释一下“验证现有用户......使用他们当前的加密密码”的确切含义吗?
  • 正如解释的那样,我们正在从 Liferay 迁移到一个新的自定义应用程序,我们有超过 2000 个来自 Liferay 的现有用户,我们需要验证他们从 Liferay 中退出的凭据并链接他们(在新应用程序使用我们从 liferayl 获得的现有数据)到新应用程序,我们这样做而不是要求用户在新应用程序中注册。所以验证我们在新应用程序中输入的用户和密码是否与我们在 liferay 的 user_ 表中的内容相匹配,以“确保”这是一个退出用户
  • 你说你想移动数据,这很好。不清楚的是您所说的“验证”是什么意思,以及加密密码与这个“验证”有什么关系。
  • 哦,我想我明白了。您希望用户使用现有 Liferay 凭据开始使用您的新应用程序登录,并且您希望根据 Liferay 的用户表检查这些凭据,并在成功时在新系统中为他们创建一个帐户。我理解正确吗?
  • 是的,这就是我想要实现的,我查看了使用 Liferay API 的方法,但在我们的例子中,将不会运行 Liferay,只会使用来自 Liferay 的数据库。这也适用于 Liferay 6.1

标签: liferay-6 password-encryption


【解决方案1】:

首先,您需要检查您的 Liferay 6.1 是如何配置的。在portal.properties 中很少有setting related to passwords。检查passwords.encryption.algorithm 的值。 Liferay Portal 6.1 中默认为 SHA (SHA-1)

当您的用户登录时,您必须使用 Liferay 门户实例使用的相同算法加密他们提供的密码,然后比较加密的字符串。

根据算法,您可能需要也可能不需要 Liferay Portal 的 API/utils。查看PwdEncryptor 类,了解用于加密密码的内容并遵循相同的方法。

请记住,您将无法解密密码。但是您将从用户的输入中将其解密。因此,一旦您确认了用户的凭据,您就可以使用您希望使用的任何加密算法将密码存储在新系统中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    相关资源
    最近更新 更多