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:
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 }
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 }
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!