SSHA512 Шифрование и совпадение с пружиной 5

Я реализую Spring Security с помощью существующего LDAP, где пароль шифруется SSHA512. Устаревший LdapShaEncoder поддерживает только {SHA} и {SSHA}.

Может кто-нибудь помочь мне реализовать Java-кодировщик SSHA512 наряду с Spring Security. Или есть ли библиотеки, которые могут сделать эту работу?

import org.springframework.security.crypto.password.LdapShaPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

@Bean
public PasswordEncoder passwordEncoder() {
    return new LdapShaPasswordEncoder();
}

Исключение:

java.lang.IllegalArgumentException: Unsupported password prefix '{SSHA512}'
    at org.springframework.security.crypto.password.LdapShaPasswordEncoder.matches(LdapShaPasswordEncoder.java:173) ~[spring-security-core-5.1.3.RELEASE.jar:5.1.3.RELEASE]
    at org.springframework.security.crypto.password.LdapShaPasswordEncoder.matches(LdapShaPasswordEncoder.java:158) ~[spring-security-core-5.1.3.RELEASE.jar:5.1.3.RELEASE]
    at org.springframework.security.authentication.dao.DaoAuthenticationProvider.additionalAuthenticationChecks(DaoAuthenticationProvider.java:90) ~[spring-security-core-5.1.3.RELEASE.jar:5.1.3.RELEASE]
    at org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:166) ~[spring-security-core-5.1.3.RELEASE.jar:5.1.3.RELEASE]

1 ответ

Решение

Посмотрите здесь: https://github.com/lathspell/java_test/tree/master/java_test_openldap Я в основном просто обменял SHA на SHA-512 в MessageDigest.getInstance() и скорректировал префикс и константы длины.

Другие вопросы по тегам