2016-05-24 9 views

Antwort

18

können Sie Jasypt verwenden Eigenschaften zu verschlüsseln, so können Sie Ihr Eigentum wie dieses:

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

Jasypt können Sie Ihre Eigenschaften verschlüsseln verschiedene Algorithmen verwenden, wenn Sie die verschlüsselte Eigenschaft erhalten setzen Sie innen die ENC(...).

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= 

Um einfach konfigurieren es mit Federverschluß Sie seine Starter verwenden können: Zum Beispiel können Sie auf diese Weise durch Jasypt mit dem Terminal verschlüsseln

jasypt-spring-boot-starter 

Denken Sie daran, dass Sie benötigen, um Starten Sie Ihre Anwendung mit dem gleichen Passwort Sie verwendet, um die Eigenschaften zu verschlüsseln.So können Sie Ihre App auf diese Weise beginnen:

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

Sie folgenden Link, um weitere Informationen überprüfen können:

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

Um Ihre verschlüsselten Eigenschaften in Ihrer App verwenden Sie es einfach zu verwenden, wie üblich, Verwendung entweder Methode Sie (Frühjahr Boot-Drähte die Magie, ohnehin die Eigenschaft natürlich im classpath sein muss):

mit @Value Anmerkung

Oder mit Environment

@Autowired 
private Environment environment; 

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

Könnten Sie bitte mehr Details erklären mit Gradle @Fritica Piazza – Johir

+0

Es ist nicht klar über die Verwendung mit Maven. Sie übergeben etwas Eigentum und was weiter? Wo Eigentumsdatei? Wie wird dieser Wert im Code dargestellt? – gstackoverflow

+0

@gstackoverflow, die Frage bezieht sich auf die Verschlüsselung/Entschlüsselung und es ist mit Spring-Boot getaggt, die Absicht war, Verschlüsselung Sachen nicht Eigentum Verwendung zu erklären. Wie auch immer, ich kann diese Antwort bearbeiten, um Ihnen mehr Details zu geben. In der Zwischenzeit verwendet Spring dies völlig transparent, injiziere die Eigenschaften einfach mit '@Values ​​(" db.password ")'. Für "wo" ist es nur der Klassenpfad. "Was weiter" ... nichts, Spring Boot macht die ganze Magie automatisch –

6

Wenn Sie Ihre Passwörter dann die einfachste Lösung verstecken ist Umgebungsvariablen in application.properties-Datei zu verwenden oder direkt im Code.

In application.properties:

mypassword=${password} 

Dann in der Konfigurationsklasse:

@Autowired 
private Environment environment; 

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

In Ihrem configuration Klasse:

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

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

Hinweis: Sie können neu starten müssen nach der Einstellung Umwelt Variable nt. Für Fenster:

In Windows

dies Siehe Documentation für weitere Informationen.

+3

Ich glaube nicht, das Master-Passwort in der Umgebung einstellen Vars ist so eine gute Idee. Das Passwort wird jetzt mehr als nötig angezeigt. Die Bereitstellung eines von Federico gezeigten Startups ist weniger exponiert und "sicherer" als die Einstellung in der Umgebung. – Jaavaaan

+0

Yaa, es ist nicht, wenn Sie Shared Computer verwenden. Wenn Sie jedoch der einzige Administrator Ihres Computers sind, kann kein anderer Benutzer die Umgebungsvariablen sehen. Ich habe auf den Versteckteil und den leichteren geantwortet. Aber ja, ich stimme zu, dass Federicos vorgeschlagene Methode viel besser ist. –

Verwandte Themen