在 Google App Engine 中托管私钥
使用“github.com/dgrijalva/jwt-go”库创建 JSON Web 令牌涉及私钥的使用。虽然在本地托管时可以轻松使用此密钥,但由于缺乏文件系统访问权限,部署到 Google App Engine (GAE) 会带来挑战。
密钥存储选项
在 GAE 上托管时,有两个主要选项用于存储私钥:
静态文件存储
用于存储私有密钥key在GAE中作为静态文件,可以放置在应用程序的根目录下,并使用相对路径引用。例如,位于 key/my_key.txt 的密钥可以作为 key/my_key.txt 进行访问。
数据存储存储
将私钥存储在数据存储中,可以创建一个 KeyEntity:
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 }
然后可以通过 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 }
注意:静态文件不可用到应用程序的代码。因此,引用存储为静态文件的私钥需要仔细配置,以确保该文件可供应用程序使用。
以上是如何在 Google App Engine 中安全存储 JWT 生成的私钥?的详细内容。更多信息请关注PHP中文网其他相关文章!