Мы переносим приложение, созданное на Sling 6 & Jackrabbit, на Sling 10 & Oak.Мы используем Oak 1.6.8, которая является версией, использованной в примере приложения Sling 10.Ранее мы создали собственные аутентификаторы и плагины для входа в систему, чтобы использовать CryptedSimpleCredentials и хранить пароли в JCR в зашифрованном виде.Похоже, что теперь это стандарт в Дубе с использованием CredentialsImpl.Я пытаюсь решить, можем ли мы отбросить наш пользовательский код и просто настроить дуб правильно.Я установил UserConfigurationImpl.config со следующими значениями:
passwordHashAlgorithm="PBKDF2WithHmacSHA256"
passwordHashIterations="1000"
passwordSaltSize="20"
Я взял ключ HashAlgorithm из комментария в org.apache.jackrabbit.oak.spi.security.user.util.PasswordUtil.generatePBKDF2(...).После кода в PasswordUtil префикс PBKDF2 сгенерирует дайджест с использованием секретного ключа.
Проходя по коду, я вижу, что во время org.apache.jackrabbit.oak.security.user.UserInitializer.Initialize (...) создается пользователь-администратор (: 139).Хеш, созданный для пароля, использует вышеупомянутые методы и создает хеш с солью и итерациями:
{PBKDF2WithHmacSHA256}b7dab4b06ad4be41-1000-8675468f4239a321b3dc8b9989a2fae0
Однако при попытке войти в систему с правами администратора он не может аутентифицировать пользователя.PasswordUtil.isSame () не может распознать алгоритм при вызове extractAlgorithm (hashedPwd), так как message.digest ("PBKDF2WithHmacSHA256") недопустим.
Мне не удалось найти других людей, которые ищут помощь по этой темеЭто заставляет меня поверить, что, возможно, у меня есть фундаментальное недоразумение, которого я не вижу.Любая помощь будет принята с благодарностью.