Heim > Backend-Entwicklung > Golang > Wie speichere ich private Schlüssel für die JWT-Generierung sicher in Google App Engine?

Wie speichere ich private Schlüssel für die JWT-Generierung sicher in Google App Engine?

Susan Sarandon
Freigeben: 2024-11-18 21:13:02
Original
747 Leute haben es durchsucht

How to Securely Store Private Keys for JWT Generation in Google App Engine?

Privaten Schlüssel in Google App Engine hosten

Verwendung der Bibliothek „github.com/dgrijalva/jwt-go“ zum Erstellen von JSON-Web-Tokens beinhaltet die Verwendung eines privaten Schlüssels. Während dieser Schlüssel beim lokalen Hosting problemlos verwendet werden kann, stellt die Bereitstellung in Google App Engine (GAE) aufgrund des fehlenden Dateisystemzugriffs eine Herausforderung dar.

Optionen für die Schlüsselspeicherung

Beim Hosten auf GAE gibt es zwei Hauptoptionen zum Speichern des privaten Schlüssels:

  1. Statische Speicherung:Der private Schlüssel kann mit dem Code der App als „ static"-Datei. Dies ist ein unkomplizierter Ansatz, der jedoch keine dynamischen Änderungen am Schlüssel zulässt.
  2. Datenspeicherung: Der private Schlüssel kann im Datenspeicher gespeichert werden, was programmgesteuerten Zugriff und Aktualisierungen ermöglicht . Es ist jedoch wichtig zu beachten, dass ein auf diese Weise gespeicherter Schlüssel bestimmten Sicherheitsaspekten unterliegen kann.

Statische Dateispeicherung

Um das Private zu speichern Wenn Sie den Schlüssel als statische Datei in GAE speichern, kann er im Stammverzeichnis der App abgelegt und über einen relativen Pfad referenziert werden. Beispielsweise kann auf einen Schlüssel, der sich unter key/my_key.txt befindet, als key/my_key.txt zugegriffen werden.

Datenspeicherung

Zum Speichern des privaten Schlüssels im Datenspeicher , kann eine KeyEntity erstellt werden:

import (
    "context"

    "cloud.google.com/go/datastore"
)

type KeyEntity struct {
    Key string
}

func StoreKey(ctx context.Context) error {
    client, err := datastore.NewClient(ctx, projectID)
    if err != nil {
        return err
    }

    _, err = client.Put(ctx, datastore.NameKey("Key", "key", nil), &KeyEntity{Key: privateKey})
    return err
}
Nach dem Login kopieren

Auf den gespeicherten Schlüssel kann dann über die GetKey-Funktion zugegriffen werden:

func GetKey(ctx context.Context) (string, error) {
    client, err := datastore.NewClient(ctx, projectID)
    if err != nil {
        return "", err
    }

    var keyEntity KeyEntity
    if err = client.Get(ctx, datastore.NameKey("Key", "key", nil), &keyEntity); err != nil {
        return "", err
    }

    return keyEntity.Key, nil
}
Nach dem Login kopieren

Hinweis: Statische Dateien sind nicht verfügbar zum Code der App. Daher erfordert die Referenzierung eines als statische Datei gespeicherten privaten Schlüssels eine sorgfältige Konfiguration, um sicherzustellen, dass die Datei für die App verfügbar ist.

Das obige ist der detaillierte Inhalt vonWie speichere ich private Schlüssel für die JWT-Generierung sicher in Google App Engine?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage