2016-05-24 13 views

答えて

18

あなたはこのようにあなたの財産を持っていることができるように、プロパティを暗号化するためにJasyptを使用することができます。

db.password=ENC(XcBjfjDDjxeyFBoaEPhG14wEzc6Ja+Xx+hNPrJyQT88=) 

Jasyptあなたが暗号化されたプロパティを得れば、あなたが内側に入れて、あなたは異なるアルゴリズムを使用してプロパティを暗号化することができますENC(...)。たとえば、あなたは、端末を使用してJasyptを通じて、このように暗号化することができます。

encrypted-pwd$ java -cp ~/.m2/repository/org/jasypt/jasypt/1.9.2/jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="contactspassword" password=supersecretz algorithm=PBEWithMD5AndDES 

----ENVIRONMENT----------------- 

Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 24.45-b08 



----ARGUMENTS------------------- 

algorithm: PBEWithMD5AndDES 
input: contactspassword 
password: supersecretz 



----OUTPUT---------------------- 

XcBjfjDDjxeyFBoaEPhG14wEzc6Ja+Xx+hNPrJyQT88= 

簡単にあなたがそのスターター使用することができます春ブーツでそれを設定するには:あなたがする必要があることを、覚えておいてください

jasypt-spring-boot-starter 

を同じパスワードを使用してアプリケーションを起動し、プロパティの暗号化に使用しました。あなたはより多くの詳細については、下のリンクをチェックすることができ

mvn -Djasypt.encryptor.password=supersecretz spring-boot:run 

https://www.ricston.com/blog/encrypting-properties-in-spring-boot-with-jasypt-spring-boot/

はいつもの、使用としてそれを使用するあなたのアプリで暗号化されたプロパティを使用するので、アプリこの方法を開始することができます方法あなたは(とにかくプロパティは、クラスパスに当然である必要があり、春ブーツワイヤー魔法を)好きのいずれか:

@Value注釈

を使用して
@Value("${db.password}") 
private String password; 

それともEnvironment

@Autowired 
private Environment environment; 

public void doSomething(Environment env) { 
    System.out.println(env.getProperty("db.password")); 
} 
+2

gradle @Frerica Piazza – Johir

+0

を使用して詳しく説明してください.Mavenでの使用については明確ではありません。いくつかの財産を渡し、さらに何を?どこプロパティファイルですか?コード内でこの値をどうやって使うのですか? – gstackoverflow

+0

@gstackoverflow、質問は暗号化/復号化に関連しており、それは春のブートでタグ付けされていますが、意図はプロパティの使用法ではなく暗号化のものを説明することでした。とにかく、私はあなたに詳細を与えるためにこの答えを編集することができます。その間、Springはこれを完全に透過的に使用し、 '@Values(" db.password ")'でプロパティを挿入するだけです。 "where"はクラスパスだけです。 "それ以上に" ...何もない、春の起動は自動的にすべての魔法を行う –

6

、あなたのパスワードを非表示にしたい場合は、最も簡単な解決策は、環境変数を使用するようにコード内application.propertiesファイル、または直接です。 application.properties

コンフィギュレーションクラスのその後
mypassword=${password} 

:あなたのconfigurationクラスで

@Autowired 
private Environment environment; 

[...]//Inside a method 
System.out.println(environment.getProperty("mypassword")); 

@Value("${password}") 
private String herokuPath; 

[...]//Inside a method 
System.out.println(herokuPath); 

注:あなたが設定した後に再起動する必要があります環境nt変数。 Windows用の :

In Windows

は、より多くの情報のため、このDocumentationを参照してください。

+3

を使用して、私は環境VARSにマスターパスワードを設定すると、このような良いアイデアだとは思いません。現在、パスワードは必要以上に公開されています。 フェデリコのようにスタートアップを提供することは、環境に設定するよりも露出が少なく、「安全」です。 – Jaavaaan

+0

あなたが共有のコンピュータを使用している場合、Yaaはそうではありません。しかし、あなたがあなたのコンピュータの唯一の管理者であれば、他のユーザはenv varsを見ることができません。私は隠れている部分と簡単な部分に答えました。しかし、はい、私はフェデリコの提案された方法が良い方法だと思います。 –

関連する問題