在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中文網其他相關文章!