Comment faire pour utiliser le mot de passe crypté dans apache BasicDataSource?
À l'heure actuelle je suis en gardant le mot de passe [ non crypté dans un fichier de propriétés. Ce mot de passe se placer dans le xml de configuration à l'aide de ant.
[ La configuration xml est à la source de données, il est la création de l'objet du dbcp.BasicDataSource ]
Maintenant, est-il possible que, après la cible ant le mot de passe est copié sous forme cryptée. Entendu le Jasypt peut le faire! Jusqu'à maintenant, je n'ai pas essayé. Mais, le problème ne se termine pas ici. BasicDataSource n'accepte pas le mot de passe crypté. Il y a tout de remplacement pour BasicDatasource.
Pour info: je suis en utilisant le Printemps, si ce qui compte.
OriginalL'auteur Rakesh Juyal | 2010-08-06
Vous devez vous connecter pour publier un commentaire.
Avec le Printemps, il y a une meilleure façon de faire: la PropertyPlaceholderConfigurer classe.
Lorsque vous spécifiez une sous-classe de PropertiesPersister dans la propriété de l'espace réservé, le Printemps de la charge de la
jdbc.properties
et déchiffrer le fichier à l'aide de cette classe. Peut-être quelque chose comme:Espère que cela aide.
MODIFIER
Si vous utilisez Jasypt, vous n'avez pas besoin de définir de
PropertiesPersister
. À partir de la Jasypt documentation:Avec cela, vous pouvez définir
jdbc.properties
comme ceet le Printemps config peut être comme cette
De cette façon, vous pouvez mettre le mot de passe pour décrypter la propriété hidden dans une variable d'environnement lorsque vous démarrez l'application, et retirés plus tard.
OriginalL'auteur Ither
Suivantes jasypt lien qui explique comment faire un fichier de propriétés contenant contenu chiffré peut être lu à partir de votre application:
http://www.jasypt.org/encrypting-configuration.html
Pour créer le fichier de propriétés de l'intérieur ANT ma suggestion est d'utiliser le plus groovy de la tâche comme suit:
OriginalL'auteur Mark O'Connor
Pas tout à fait vrai dans le cas de
BasicDataSource
.Si vous lisez la documentation javadoc pour
BasicDataSource
,setPassword()
n'a pas d'effet une fois que la piscine a été initialisé. La piscine est initialisé la première fois l'une des méthodes suivantes est invoquée:getConnection
,setLogwriter
,setLoginTimeout
,getLoginTimeout
,getLogWriter
.Ref: http://www.docjar.com/html/api/org/apache/commons/dbcp/BasicDataSource.java.html
Toutes ces méthodes appel
createDataSource()
finalement.De sorte que votre nouveau BasicDataSource classe ne doit substituer la méthode
createDataSource()
Quelque chose comme ceci:
OriginalL'auteur huydang
Étendre BasicDataSource, remplacer setPassword et setUserName méthodes. Décrypter les valeurs de ces méthodes et de les transmettre à super les méthodes de la classe.
OriginalL'auteur Adi
Créer une nouvelle tâche, par l'extension de tâches existantes
Copy
( responsable de la copie de fichier ). Créer un nouveau type en étendantFilterSet
( responsable du filtrage de jetons ).voir le code ici:-
Comment créer des listes de l'élément de tâche ant?
build.xml
bla-bla.propriétés
xml de configuration
Après l'exécution de la cible le xml est copié avec des valeurs de propriétés de fichier. Mot de passe sera crypté.
Cela va gérer le mot de passe crypté.
EncryptionAwareDataSource
Que " toutes 😉
OriginalL'auteur Rakesh Juyal