У меня есть приложение REST API, где учетные данные хранятся в виде хэшей в таблице базы данных.Кроме того, у меня есть другое приложение, которое управляет учетными данными для первого приложения.Я сгенерировал в обоих приложениях DelagtingPasswordEncoder.
@Bean
public PasswordEncoder delegatingPasswordEncoder() {
PasswordEncoder defaultEncoder = NoOpPasswordEncoder.getInstance();
Map<String, PasswordEncoder> encoders = new HashMap<>();
encoders.put("bcrypt", new BCryptPasswordEncoder());
encoders.put("scrypt", new SCryptPasswordEncoder());
DelegatingPasswordEncoder passworEncoder = new DelegatingPasswordEncoder("bcrypt", encoders);
passworEncoder.setDefaultPasswordEncoderForMatches(defaultEncoder);
return passworEncoder;
}
Когда я пытаюсь выполнить аутентификацию на REST API с использованием учетных данных, сгенерированных приложением администратора, я получаю Unauthorized 401. Хэш bcrypt, сгенерированный в приложении администратора, не можетбыть сопоставлены bcrypt приложения REST API.Я предполагаю, что случайная соль, сгенерированная bcrypt, также зависит от контекста, в котором она инициализирована?
Мы использовали Basic Auth для теста с правильным паролем, сгенерированным приложением администратора, перед тем как сохранить его как хеш вбаза данных.
Оба приложения совместно используют одну и ту же базу данных, но в остальном независимы друг от друга.
Возможно ли использовать bcrypt в обоих приложениях или каков наилучший способ обмена паролями между обоими приложениями?