2017-02-01 6 views
1

いくつかの統合テスト(私自身はJNDIを使用しています)で使用されるSpringアプリケーションコンテキストのユーザー名とパスワードを安全に外部化する必要があります。Springアプリケーションコンテキストで使用されるユーザー名とパスワードを安全に外部化する方法

アイデアは、このようなものです:

application.properties アプリケーション/

その後、私の春のアプリケーションコンテキストデータソースBeanがこのようなものになります。

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
    <property name="url" value="jdbc:mysql://localhost/my_database" /> 
    <property name="username" value="${application.username}" /> 
    <property name="password" value="${application.password}" /> 
    <property name="initialSize" value="3" /> 
    <property name="maxActive" value="10" /> 
    </bean> 

のトリックがでていることです.propertiesファイルの場合は、パスワードも暗号化する必要があります。

これも可能かどうかは分かりませんが、誰かが考えを持っている可能性はありますか?

ジェイソン

+0

代わりに環境変数を使用してください。このため、パスワードはアプリケーションコンテキストファイルやプロパティファイルのいずれにも表示されません。 –

+0

暗号化されていないパスワードは、過度のセキュリティタイプのため、私のマシンにはどこにも保存できません。 – Jason

+0

http://stackoverflow.com/questions/3423135/how-to-use-encrypted-password-in-apache-basicdatasource –

答えて

1

むしろXMLに比べて、プログラムでデータソースを定義する、またはあなたがapplication.yaml

内の設定で、春のブートを使用している場合、いずれかの方法では、春の環境プロパティとしてユーザーとパスワードを指定し、移入機密プロパティの完全な暗号化と復号化をサポートするSpring Cloud Configサーバーのプロパティ。アプリサーバは、JNDIデータソースを使用して、アプリケーションサーバーは、データソースのパスワードのセキュリティを処理させる代わりに使用している場合

hereを参照してください。

+1

私はデータソースを取得するためにJNDIを使いたいと思いましたが、wlclient全体を含める必要がありました。 jarを使用して命名ファクトリを設定します。単体テストを不快な設定なしで「うまく動作する」ようにしたいので、私は別のルートを実行しなければなりませんでした。 – Jason

関連する問題