Невозможно войти в БД, используя jasypt
Привет я использую ниже maven зависимость в моем загрузочном приложении Spring.
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>1.16</version>
</dependency>
Я использую приведенную ниже команду для шифрования моего пароля БД.
encrypt input="test" password=test algorithm=PBEWithMD5AndDES
В моем application.properties у меня есть свойства ниже,
spring.datasource.url=jdbc:sqlserver://localhost:1234;database=TEST_DB
spring.datasource.username=test
spring.datasource.password=ENC(OPdJ9jOw7tbJR+MlptpCHg==)
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.poolName=SpringBootHikariCP
spring.datasource.maximumPoolSize=50
spring.datasource.minimumIdle=30
spring.datasource.maxLifetime=2000000
spring.datasource.connectionTimeout=30000
spring.datasource.idleTimeout=30000
spring.datasource.pool-prepared-statements=true
spring.datasource.max-open-prepared-statements=250
В моем коде приложения я могу получить расшифрованное значение свойства spring.datasource.password. Но когда я использую JDBCTemplate
Я получаю ниже исключения.
Редактировать:
Ошибочно добавлена неверная трассировка стека. Ниже правильный. Из-за 3 неудачных попыток срок действия пароля истек.
[ERROR] 2018-09-03 04:50:45.578 [https-jsse-nio-8092-exec-9] util - LOG : Class :Controller|| Method :process || org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'test'. ClientConnectionId:ba0abe4d-014a-42d3-b39e-ec1efc0e7131
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:394)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:474)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:484)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:494)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:500)
at com.test.dao.AppDaoImpl.generateQuery(AppDaoImpl.java:77)
at com.test.dao.AppDaoImpl$$FastClassBySpringCGLIB$$5d4e5540.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673)
at com.test.dao.AppDaoImpl$$EnhancerBySpringCGLIB$$eb86c18b.generateQuery(<generated>)
Он не может войти в базу данных. Ниже мой AppDaoImpl.java
@Repository
public class AppDaoImpl implements AppDao {
@Autowired
JdbcTemplate jdbcTemplate;
@Override
public Integer generateQuery(String id) throws ImpsException {
return jdbcTemplate.update(QueryConst.SQL_INSERT_QUERY, id);
}
}
До jasypt я просто автоматически подключал JDBCTemplate, и все работало нормально. Теперь он не может войти.
PS: я запускаю свое приложение с
-Djasypt.encryptor.password=test -Djasypt.encryptor.algorithm=PBEWithMD5AndDES
1 ответ
Из сообщения Reason: The password of the account has expired.
ясно, что срок действия пароля истек.
Войдите на сервер SQL как системный администратор. Измените пароль на что-то другое. Убедитесь, что принудительная политика паролей отключена, а затем измените пароль обратно на исходный пароль.
ИЛИ ЖЕ
Щелкните правой кнопкой мыши "Имя пользователя" и перейдите в Свойства
Вы можете найти "Принудительное истечение срока действия пароля" в окне свойств входа в систему, которое необходимо снять.