Programmieren: Zugangsdaten sicher speichern mit Go

Das Kennwort landet bei der Server-Anmeldung im Klartext in einer Datei auf der Festplatte. Mit Go nutzen Sie den sicheren Kennwortspeicher des Betriebssystems.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht

(Bild: Albert Hulm)

Lesezeit: 11 Min.
Von
  • Jan Mahn
Inhaltsverzeichnis

Die "schönsten" Probleme beim Programmieren sind solche, die man vorm Programmieren noch gar nicht hatte. Eigentlich hatte man sich mit einem ganz anderen Ziel an den Computer gesetzt und verbringt dann die meiste Zeit mit einer ganz neuen Baustelle. Für manche Probleme gibt es nämlich ästhetische Lösungen, deren Schönheit darin besteht, dass der Nutzer von ihnen nichts mitbekommt. Die Gewissheit, eine wirklich schöne Lösung gefunden und umgesetzt zu haben, muss als Lohn für die Arbeit dann ausreichen. Wenn man die Welt dabei noch ein Stückchen sicherer gemacht hat, ist das befriedigend genug.

Das sichere Speichern von Zugangsdaten in einer Anwendung ist ein gutes Beispiel, das eine schöne Lösung verlangt. Auf die Existenz dieses Problems stieß ich natürlich nebenbei: Ein kleines Kommandozeilenwerkzeug sollte her, mit dem Kollegen und ich per HTTPS auf ein internes API im Verlag zugreifen können. Eigentlich keine große Sache: Meine neue Lieblingssprache Go bringt alles mit, um eine Kommandozeilenanwendung zu bauen und für alle gängigen Betriebssysteme zu kompilieren. Unter Windows, Linux und macOS sollte das Programm laufen, damit möglichst viele Kollegen in den Genuss kommen können. Die ersten Schritte waren auch schnell erledigt, die Hülle einer Kommandozeilenanwendung mit Go und dem CLI-Framework Cobra habe ich in einer mittlerweile vierteiligen Artikelreihe zum Einstieg in Go vorgestellt und konnte mich dort an meinem eigenen Code großzügig bedienen. Das Cross-Compiling erledigt Go voller Eleganz und schnell hatte ich auf dem Mac drei Binärdateien für die drei Betriebssysteme. Auch das Abrufen von Informationen aus einem HTTP-API ist mit den Bordmitteln von Go keine große Herausforderung.

Einstieg in das Programmieren mit Go

Doch dann musste ich mich am API-Server anmelden, ganz klassisch per Benutzername und Kennwort. Irgendwie widerstrebte es mir, auch zu Testzwecken, mein Kennwort mal kurz in den Code einzubauen. Allzu schnell landen solche Experimente versehentlich in der Versionsverwaltung und dann schlimmstenfalls bei GitHub. Ein vermeidbarer Fehler. Eine ästhetische Login-Routine musste her, bevor ich den Rest der eigentlichen Anwendung bauen konnte.