Spring Boot verwendet die Eigenschaftendatei, und mindestens standardmäßig sind die Kennwörter im Nur-Text-Format. Ist es möglich diese irgendwie zu verstecken/zu entschlüsseln?Spring Boot, wie Kennwörter in Eigenschaftendatei zu verbergen
Antwort
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"));
}
Der Spring Cloud-Konfig-Server lässt diese Art von Verhalten zu. Mit JCE können Sie einen Schlüssel auf dem Server einrichten und damit die Apps-Eigenschaften verschlüsseln.
http://cloud.spring.io/spring-cloud-config/spring-cloud-config.html
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:
dies Siehe Documentation für weitere Informationen.
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
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. –
- 1. Spring Boot: Lesen der Datenquelleneigenschaften aus einer anderen Eigenschaftendatei
- 2. Spring-Boot: Konfiguration verschiedener Versionen einer Eigenschaftendatei mit festem Dateinamen?
- 3. Wie in Spring-Boot-
- 4. Zugriff auf Eigenschaftendatei in Spring Expression Language
- 5. Umgebungsspezifische Datei application.properties in Spring Boot-Anwendung
- 6. Spring Boot Actuator ohne Spring Boot
- 7. Spring Boot externe Konfiguration
- 8. Wie überspringe ich den Platzhalterwert, wenn er nicht in der Eigenschaftendatei im Spring Boot enthalten ist?
- 9. Spring ReloadableResourceBundleMessageSource nicht finden Eigenschaftendatei
- 10. Wie füge ich mehrere application.properties Dateien im Spring-Boot hinzu?
- 11. Spring-Boot & Spring-Security-Konfiguration
- 12. Spring Boot Profil. Wie testen?
- 13. Spring Boot Log in Datei
- 14. Verwenden Sie den Spring Boot Actuator ohne Spring-Boot-Anwendung
- 15. Wie ErrorPageFilter in Spring Boot deaktivieren?
- 16. Spring Boot - konfigurieren EntityManager
- 17. Ist Docker komplementär zu Spring Boot/Dropwizard?
- 18. Spring Boot Basic
- 19. Spring Boot log4j Datei extern zu jar?
- 20. Wie Debuggen einer Spring Boot-Anwendung in Spring Tool Suite
- 21. Spring boot + Groovy + logback.groovy
- 22. Zu viele Verbindungen Spring Boot jdbc
- 23. Spring Boot + eckigen routeProvider
- 24. Understanding Spring Boot @Autowired
- 25. Prozess Spring Boot externalised Eigenschaft Werte
- 26. Spring Boot + Thymeleaf finde keine Nachrichteneigenschaften
- 27. Spring Boot-Sicherheitskonsole/Befehlszeilenanwendung
- 28. Spring Boot Sitzung Timeout
- 29. Spring Boot Protokollierungsmuster
- 30. Spring-Boot JWT Logout
Könnten Sie bitte mehr Details erklären mit Gradle @Fritica Piazza – Johir
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
@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 –