Hébergement d'une clé privée dans Google App Engine
Utilisation de la bibliothèque "github.com/dgrijalva/jwt-go" pour créer des jetons Web JSON implique l’utilisation d’une clé privée. Bien que cette clé puisse être facilement utilisée lors de l'hébergement local, le déploiement sur Google App Engine (GAE) présente un défi en raison du manque d'accès au système de fichiers.
Options de stockage des clés
Lors de l'hébergement sur GAE, il existe deux options principales pour stocker la clé privée :
Stockage de fichiers statiques
Pour stocker la clé privée key en tant que fichier statique dans GAE, il peut être placé dans le répertoire racine de l'application et référencé à l'aide d'un chemin relatif. Par exemple, une clé située dans key/my_key.txt est accessible sous key/my_key.txt.
Stockage de la banque de données
Pour stocker la clé privée dans la banque de données , une KeyEntity peut être créée :
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 }
La clé stockée est ensuite accessible via la fonction GetKey :
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 }
Remarque : Les fichiers statiques ne sont pas disponibles au code de l'application. Par conséquent, référencer une clé privée stockée sous forme de fichier statique nécessite une configuration minutieuse pour garantir que le fichier est disponible pour l'application.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!