Проверка подлинности base64

#spring #authentication #spring-security #spring-roo

#spring #проверка подлинности #spring-безопасность #spring-roo

Вопрос:

Я разрабатываю приложение с Spring roo. В качестве первого теста аутентификации, подразумевающего Spring security, я использовал аутентификацию для таблицы в моей базе данных. Это работает нормально :

     <authentication-manager alias="authenticationManager">
        <authentication-provider>
            <jdbc-user-service data-source-ref="dataSource" authorities-by-username-query="select username,authority from users where username=?"/>
        </authentication-provider>
    </authentication-manager>
  

Теперь все становится немного сложнее (для меня), поскольку пароль в «реальной» (в рабочей среде env) таблице пользователей зашифрован, я должен сначала использовать хэш-функцию md5, а затем кодировку base64, а также iso для обработки специальных символов.

Я должен создать пользовательский jdbc-user-service. Каковы были бы наилучшие методы для решения этих операций?

Комментарии:

1. Вы рассмотрели существующую функциональность кодировщика паролей, которая поставляется с Spring Security?

2. ДА. Это очень хорошо, но, к сожалению, метод кодирования, используемый для существующего имени пользователя и пароля, является своего рода экзотическим, и я должен его создать…

3. Хорошо, я понимаю это, но если вы посмотрите на существующие реализации, у вас должно быть несколько хороших указаний о том, как это реализовать. Я не понимаю, зачем вам нужна пользовательская служба JDBC user service, реализация кодировщика паролей, подключенная к вашей службе сведений о пользователе, должна работать нормально.

4. Наверное, мне трудно понять, в чем заключается ваш вопрос — вы хотите знать, как создать пользовательский кодировщик паролей или как подключить его к стандартной пользовательской службе JDBC, или и то, и другое?

5. На самом деле мне понадобились бы оба. Вы правы, мои вопросы неточны, потому что я не совсем понимаю spring security. Я нашел несколько хороших ресурсов по тегу password-encoder (используя ссылку на компонент), но я не понимаю, как я могу создать кодировщик паролей, как я могу использовать различные методы.

Ответ №1:

Как и предлагалось, мне удалось решить проблему с помощью Spring security build в аутентификации.

Сначала мне нужно было установить кодировку security-context.xml соответствует стандарту ISO-8859-1

 <?xml version="1.0" encoding="ISO-8859-1"?>
  

затем используйте :

 <password-encoder hash="md5" base64="true" ></password-encoder>
  

Ответ №2:

Первое, что нужно сделать, это создать пользовательский кодировщик паролей, который позволит мне лучше контролировать процесс аутентификации.

  1. В applicationContext-Security.xml

  2. Создайте пользовательский класс

    открытый класс SnatiPasswordEncoder реализует PasswordEncoder {

     @Override
    public String encodePassword(String arg0, Object arg1)
            throws DataAccessException {
        // TODO Auto-generated method stub
        return null;
    }
    
    @Override
    public boolean isPasswordValid(String arg0, String arg1, Object arg2)
            throws DataAccessException {
        // TODO Auto-generated method stub
        return false;
    }
    
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    
    }
      

    }

Что должно быть дальше ?