Я пытаюсь простой пример LDAP с использованием LDIF отсюда [пример LDIF] [1].Я был в состоянии настроить все и запустить его правильно, используя пользователя / пароль по умолчанию.
Однако я пытаюсь создать новых пользователей, и я использовал приведенный ниже код Java для генерации паролей для "joe", но, похоже, он не работает:
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
private static String get_SHA_1_SecurePassword(String passwordToHash)
{
String generatedPassword = null;
try {
MessageDigest md = MessageDigest.getInstance("SHA-1");
byte[] bytes = md.digest(passwordToHash.getBytes());
StringBuilder sb = new StringBuilder();
for(int i=0; i< bytes.length ;i++)
{
sb.append(Integer.toString((bytes[i] & 0xff) + 0x100, 16).substring(1));
}
generatedPassword = sb.toString();
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}
return generatedPassword;
}
Код для проверкипароль из примера ссылки выше:
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.ldapAuthentication()
.userDnPatterns("uid={0},ou=people")
.groupSearchBase("ou=groups")
.contextSource()
.url("ldap://localhost:8389/dc=springframework,dc=org")
.and()
.passwordCompare()
.passwordEncoder(new LdapShaPasswordEncoder())
.passwordAttribute("userPassword");
}
Вот фрагмент файла LDIF с паролями:
//working copy for ben from example
dn: uid=ben,ou=people,dc=springframework,dc=org
dn: uid=ben,ou=people,dc=springframework,dc=org
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Ben Alex
sn: Alex
uid: ben
userPassword: {SHA}nFCebWjxfaLbHHG1Qk5UU4trbvQ=
//new user "joe"
dn: uid=joe,ou=people,dc=springframework,dc=org
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Joe S
sn: joe
uid: joe
userPassword: {SHA}9c509e6d68f17da2db1c71b5424e54538b6b6ef4
Пароль, который я использовал для Джо, это "Джо", и я не могу, кажется,принять это.Отличается ли шифрование?Я использую Windows, кстати.