Внешняя конфигурация Spring Boot с шифрованием Jasypt (проблема начальной загрузки) - PullRequest
0 голосов
/ 09 марта 2019

В моем загрузочном приложении Spring, когда я пытаюсь подключиться к MongoDB по шаблону uri с зашифрованным паролем Jasypt, я получаю исключение аутентификации.Во время отладки я вижу, что расшифровка Jasypt не происходит при использовании URI, тогда как с индивидуальной конфигурацией монго (см. Ниже) соединение успешно.В журнале зашифрованная строка ENC(Qev1vJ3DummyPSUApeQfgdgfd==) печатается без расшифровки.Вся конфигурация передается через командную строку, используя SPRING_APPLICATION_JSON

Используя uri :( Не работает)

java -Dspring.application.json = "{ниже 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 =" {ниже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 |Jasypt: 1.14

Исключение:

com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=null, userName=myusername, source=mydb, password=<hidden>, mechanismProperties={}}

Похоже, что расшифровка Jasypt не происходит, когда она используется в URI.Я не уверен, может ли это быть связано с начальной загрузкой конфигурации.Любые указатели будут полезны.

Ответы [ 2 ]

0 голосов
/ 09 марта 2019

Нашел ответ.Похоже, что эта проблема существует в Jasypt 1.14 и исправлена ​​в версии 1.17 и выше.

Если в случае версии 1.14 невозможно изменить, добавьте следующую запись в resources / META-INF / spring.factories

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.ulisesbocchio.jasyptspringboot.JasyptSpringBootAutoConfiguration

В версии 1.17 Jasypt's EnableEncryptablePropertiesConfiguration использует Applicationcontextinitializer для настройки Environment

0 голосов
/ 09 марта 2019

Я бы предложил указать зашифрованное свойство напрямую, например:

{
    "spring": {
        "data": {
            "mongodb": {
                "uri": "mongodb://myusername:${mongodb.password}@localhost:27017/mydb"
            }
        }
    },
    "jasypt": {
        "encryptor": {
            "password": "myjasypt-password"
        }
    },
    "mongodb": {
        "password": "ENC(Qev1vJ3DummyPSUApeQfgdgfd==)"
    }
}

В моей книге это сделает два примера эквивалентными

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...