【发布时间】:2019-03-09 12:55:49
【问题描述】:
在我的 Spring boot 应用程序中,当我尝试使用 uri 模式和 Jasypt 加密密码连接到 MongoDB 时,我遇到了 Auth 异常。在调试时,我确实看到使用 URI 时没有发生 Jasypt 解密,而使用单独的 mongo 配置(见下文)连接成功。在日志中,加密的字符串ENC(Qev1vJ3DummyPSUApeQfgdgfd==) 被打印出来,没有解密。整个配置通过命令行使用SPRING_APPLICATION_JSON
使用uri:(不工作)
java -Dspring.application.json="{below json}" -jar myapp.jar
{
"spring": {
"data": {
"mongodb": {
"uri": "mongodb://myusername:${spring.data.mongodb.password}@localhost:27017/mydb",
"password": "${mongodb.password}"
}
}
},
"jasypt": {
"encryptor": {
"password": "myjasypt-password"
}
},
"mongodb": {
"password": "ENC(Qev1vJ3DummyPSUApeQfgdgfd==)"
}
}
With Individual property setting:(工作正常)
java -Dspring.application.json="{below json}" -jar myapp.jar
{
"spring": {
"data": {
"mongodb": {
"host": "localhost",
"port": "27017",
"database": "mydb",
"username": "myusername",
"password": "${mongodb.password}"
}
}
},
"jasypt": {
"encryptor": {
"password": "myjasypt-password"
}
},
"mongodb": {
"password": "ENC(Qev1vJ3DummyPSUApeQfgdgfd==)"
}
}
Spring Boot:1.5.2.RELEASE | MongoDB:3.4.2 |贾西普特:1.14
例外:
com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=null, userName=myusername, source=mydb, password=<hidden>, mechanismProperties={}}
在 uri 中使用 Jasypt 时似乎没有进行解密。我不确定这是否与配置的引导有关。任何指针都会有所帮助。
【问题讨论】:
-
不知道你是否编辑了URI示例,但
jasypt属性前有两个逗号,表示该示例是格式错误的json -
更正了我在问题中的错字。单独复制和粘贴导致错字。
标签: spring-boot jasypt