2015-03-17 3 views
0

Если у меня есть база данных, в которой хранятся имена пользователей и пароли, зашифрованные с помощью кодера Spring Bcrypt, как бы я хотел его декодировать обратно в обычный текст в Spring с моей текущей настройкой ?Spring Security - Bcrypt с CAS, MySQL, SearchModeSearchDatabaseAuthenticationHandler и BasicDataSource

Моя MySQL имеет эту таблицу для проверки подлинности:

username  | password  | enabled 
---------------------------------------- 
varchar(50) | varchar(100) | tinyint 

В поле пароля будет содержать пароль Bcrypt для каждого пользователя.

Теперь для развертывания CASConfigContext.xml.

<bean class="org.jasig.cas.adaptors.jdbc.SearchModeSearchDatabaseAuthenticationHandler"> 
    <property name="tableUsers"><value>user_authentication</value></property> 
    <property name="fieldUser"><value>username</value></property> 
    <property name="fieldPassword"><value>password</value></property> 
    <property name="dataSource" ref="dataSource"/> 
    </bean> 

И я определил DataSource как:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> 
    <property name="driverClassName"> 
     <value>com.mysql.jdbc.Driver</value> 
    </property> 
    <property name="url"> 
     <value>jdbc:mysql://localhost:3306/user_mgt</value> 
    </property> 
    <property name="username"><value>root</value></property> 
    <property name="password"><value>test_pw</value></property> 
</bean> 

я не уверен, смогу ли я реализовать Bcrypt декодирование без настройки.

ответ

1

Когда вы используете хешированные пароли, невозможно вернуть обычный текст, для этого мы используем алгоритмы хеширования для ввода хэшированных паролей. Для аутентификации пользователей вам необходимо сравнить хешированный пароль в базе данных с хешированным паролем, который пользователь вводит для подключения. Spring безопасность делает это для вас, вы должны просто сказать безопасность пружины, которые вы используете BCryptPasswordEncoder в конфигурации:

<authentication-manager> 
    <authentication-provider> 
     ....... 
     <password-encoder red="encoder"/> 
    </authentication-provider> 
</authentication-manager> 
......... 
<beans:bean id="encoder" class="org.springframework.security.crypto.password.BCryptPasswordEncoder"/> 

пожалуйста, обратитесь к прыжку документации по безопасности