À l'aide de mot de passe codé pour la source de données utilisée au printemps applicationContext.xml

Je veux garder le mot de passe codé dans mon mentionnés ci-dessous springApplicationContext.xml

Est-il un moyen pour y parvenir?

actuellement j'ai configuré toutes les propriétés à l'aide de la propriété de l'espace réservé
comme indiqué ci-dessous, mais le mot de passe brut est encore ouvert dans ma base de données.propriétés

springApplicationContext.xml

<beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <beans:property name="driverClassName"><beans:value>${db.driverClassName}</beans:value></beans:property>
        <beans:property name="url"><beans:value>${db.url}</beans:value></beans:property>
        <beans:property name="username"><beans:value>${db.username}</beans:value></beans:property>
        <beans:property name="password"><beans:value>${db.password}</beans:value></beans:property>
</beans:bean>

mais les valeurs réelles sont présents dans mon database.properties

db.driverClassName=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost/myDB
db.username=root
db.password=root

Je veux quelque chose comme ci-dessous:

springApplicationContext.xml (même que ci-dessus)

<beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <beans:property name="driverClassName"><beans:value>${db.driverClassName}</beans:value></beans:property>
        <beans:property name="url"><beans:value>${db.url}</beans:value></beans:property>
        <beans:property name="username"><beans:value>${db.username}</beans:value></beans:property>
        <beans:property name="password"><beans:value>${db.password}</beans:value></beans:property>
</beans:bean>

Mais le mot de passe de la valeur de la propriété doit être dans encripted format dans mon database.properties

db.driverClassName=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost/myDB
db.username=root
db.password=3g6n72ef8x (using any encription method).

et ma source de données interne de décrypter le mot de passe avant de prendre de nouveaux DB connexion.

Très apprécier pour toute aide/suggestion dans ce.

  • L'approche proposée ci-dessous fonctionne très bien quand vous pouvez prendre une chaîne codée et de décoder directement. Mais pour la vraie cryptage, vous ne pouvez pas prendre une chaîne cryptée et juste décrypter: vous prenez un mot de passe en clair, les chiffrer, et de la comparer à la valeur chiffrée. Par exemple, voir org.springframework.de sécurité.crypto.le mot de passe.StandardPasswordEncoder qui est quelque chose comme ce que vous devriez probablement utiliser une fois que vous déplacez au-delà de l'encoder en base64. La question est donc: comment est-ce que votre source de données obtenir le mot de passe pour vérifier l'encontre de la valeur chiffrée de la db.le mot de passe?
  • En fait, l'exigence a été de ne pas garder le mot de passe brut ouvrir dans ma base de données.fichier de propriétés. D'où mon CustomDataSource est le décodage de la valeur codée de la base de données.les propriétés de fichier et ensuite l'utiliser pour créer de nouvelles connexions de base de données.
  • Je dirais qu'un mot de passe crypté en base64 est essentiellement la même que les raw d'un mot de passe (pas sûr), mais je suppose que la sémantique de l'exigence l'exigence de décideurs de décider.
InformationsquelleAutor Sandy | 2012-10-11