2009-07-31 3 views
3

Ich habe ein kleines Java Prog, das einen Webservice verwendet, der eine Autorisierung benötigt. Also muss das Java Prog (das mit Windows Task Scheduler ausgeführt werden soll) ein Benutzer/Passwort-Argument haben. Wie kann ich diese irgendwo speichern, ohne dass sie als Klartext in einer Datei liegen?Speichern von Passwörtern für Batch-Jobs

Bisher habe ich versucht, mit runtime.getRuntime und CACLS eine Klartextdatei zu haben, aber ändern Sie die Berechtigungen, so dass nur der Besitzer es öffnen konnte (hat nicht funktioniert, nicht sicher, warum).

Passwortverschlüsselung funktioniert nicht, denn wenn ich den Hash an den Webservice übergebe, ist der Webservice nur "errr what? Demied, get lost", aber wenn ich die Verschlüsselung mit geheimen Schlüsseln benutze, brauche ich ein Passwort um das Passwort zu entschlüsseln. und wo kann ich das speichern? : P

Hilfe? Bitte? :)

Danke.

Antwort

0

Zwei Fragen:

  1. warum brauchen Sie sie an das Programm extern speichern? Warum codieren Sie nicht innerhalb Ihres Java-Programms (müssen Sie oder der Benutzer sie ändern?)
  2. Können Sie sie äußerlich speichern, aber verschlüsselt? Zum Beispiel können Sie mit einem öffentlichen Schlüssel verschlüsseln und den privaten Schlüssel im Programm selbst speichern. Daher sollte die Sichtbarkeit des codierten Paares keine Rolle spielen.

Sie haben ein Problem, unabhängig von jedem Ansatz, dass Sie können leicht disassemble ein Java-Programm. Welche Methode Sie auch wählen, die Disassemblierung macht sie anfällig.

1

Wie kann ich diese irgendwo speichern, ohne dass sie als Klartext in einer Datei herumliegen?

Das Speichern ohne "Datei" wird schwierig. In jedem Fall müssen Sie das Passwort von einem bestimmten Ort abrufen.

  • Verwenden Sie einige symetrische Verschlüsselung für so eine schnelle Hash Verschleiern nicht Ihr Passwort
  • Verwenden Sie das OS-Dateisystem (schreibgeschützt für den Benutzer , die das Programm verwendet, keinen Zugang zu allen anderen) offenbart Schützen Sie die Datei auf dem lokalen Datenträger oder legen Sie sie auf ein externes Laufwerk (Flash).
0

Eine Option besteht darin, den Windows-Taskplaner nicht zu verwenden, sondern Ihr Programm als Dienst zu verwenden. Auf diese Weise können Sie Ihren Dienst einmalig mit dem Passwort als Parameter starten. Dann bleibt das Passwort für Ihren Service im Speicher und Sie müssen es nicht mehr speichern.

das Programm als Service-Einstellung kann ganz einfach mit dem keine Möglichkeit Es gibt Java Service Wrapper

+0

Ist das nicht sichtbar über die Prozesstabelle (wenn Sie es als Befehlszeilenparameter angeben) oder über die Service-Wrapper-.conf-Datei? –

+0

Nun, soweit ich weiß, die .conf-Datei ist nicht mehr notwendig, sobald die Anwendung gestartet wird, so dass Sie einfach die Datei vollständig oder nur den Parameter entfernen können. – gizmo

1

getan werden, dass Sie Ihr Passwort sicher halten kann, wenn jemand Behörde, dass die laufende Maschine zuzugreifen. Das Passwort verschlüsselt irgendwo im Speicher zu behalten, ist der sicherste Weg, den ich denke, genau wie die oben beschriebene Run-as-Service-Lösung.

Für einen ausgeklügelteren Ansatz können Sie einen Daemon erstellen, der es Ihnen ermöglicht, das Passwort einzugeben, es verschlüsselt im Speicher zu behalten und den verschlüsselten Text über IPC (Socket) an Ihr Java-Programm weiterzuleiten es zu benutzen. Aber ich würde das nie tun ... Hihihi ...

2

Die einfache Antwort ist:

Sie können nicht machen es ganz sicher, aber man kann es geringfügig mehr machen sicher.

Sie können das Kennwort nicht hashen, da dies die Verwendung durch Ihr Programm verhindern würde.

Sie können das Passwort in eine Datei speichern und die Datei mit den Betriebssystemberechtigungen schützen. Sie müssen dem Prozess, der Ihr Programm ausführt, Lesezugriff gewähren. Dies verhindert, dass Personen ohne Administratorrechte das Kennwort anzeigen können.

Sie können das Kennwort verschlüsseln und den Schlüssel in Ihrem Programm angeben. Dies verhindert eine zufällige Beobachtung des Passworts durch diejenigen, die die Datei lesen können, aber nicht aufhören (oder sogar viel verlangsamen), wenn jemand Zugriff auf das Passwort und Ihr Programm hat.

Alles andere ist mehr oder weniger Theater.

+0

Warum die down vote? Etwas ungenau? –