使用String.equals比较密码并对LDAP服务器验证用户,它是否有意义?

Pio*_*pla 2 java ldap teamsite

我正在使用相当古老的大型CMS(TeamSite),它有一个如何将其连接到LDAP服务器的示例.我已经阅读了这个例子,它以非常奇怪的方式工作.它只是按预期在"userPassword"字段中存储密码,但它手动执行验证而不是使用bind命令.

这对我没有意义,但我可能在这里错了,因为我以前没有使用过LDAP服务器.你知道为什么有人想手动比较密码而不是使用bind吗?

以下是代码的外观:

  Attribute attrPassword = attrs.get("userPassword");
  if (attrPassword.size() > 0)
  {
    String storedPassword = new String((byte[])attrPassword.get(0));

    if (password.equals(storedPassword))
    {  
      ///.....
Run Code Online (Sandbox Code Playgroud)

Col*_*inD 6

这对我来说也没有意义.LDAP中的密码不应该是实际的密码本身,它应该是密码的哈希值.如果你检索字段并进行比较,你需要知道它正在使用什么类型的哈希,并以相同的方式哈希你自己比较的密码.它还要求userPasswordLDAP 中的属性可用于检索,这是不必要的,我不认为.

简而言之,不......我认为你应该使用bind.