Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menyimpan Kunci Peribadi dengan Selamat untuk Penjanaan JWT dalam Enjin Aplikasi Google?

Bagaimana untuk Menyimpan Kunci Peribadi dengan Selamat untuk Penjanaan JWT dalam Enjin Aplikasi Google?

Susan Sarandon
Lepaskan: 2024-11-18 21:13:02
asal
746 orang telah melayarinya

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

Menghos Kunci Peribadi dalam Enjin Apl Google

Menggunakan perpustakaan "github.com/dgrijalva/jwt-go" untuk mencipta token web JSON melibatkan penggunaan kunci persendirian. Walaupun kunci ini boleh digunakan dengan mudah apabila mengehos secara tempatan, penggunaan ke Google App Engine (GAE) memberikan cabaran kerana kekurangan akses sistem fail.

Pilihan untuk Storan Kunci

Apabila mengehos pada GAE, terdapat dua pilihan utama untuk menyimpan kunci persendirian:

  1. Storan Statik: Kunci persendirian boleh dihantar bersama kod apl sebagai " fail statik". Ini adalah pendekatan yang mudah, tetapi ia tidak membenarkan perubahan dinamik pada kunci.
  2. Storan Simpanan Data: Kunci persendirian boleh disimpan dalam Datastore, yang membolehkan akses terprogram dan kemas kini . Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa kunci yang disimpan dengan cara ini mungkin tertakluk kepada pertimbangan keselamatan tertentu.

Storan Fail Statik

Untuk menyimpan peribadi kunci sebagai fail statik dalam GAE, ia boleh diletakkan dalam direktori akar apl dan dirujuk menggunakan laluan relatif. Contohnya, kunci yang terletak di key/my_key.txt boleh diakses sebagai key/my_key.txt.

Storan Simpanan Data

Untuk menyimpan kunci peribadi dalam Datastore , KeyEntity boleh dibuat:

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
}
Salin selepas log masuk

Kekunci yang disimpan kemudiannya boleh diakses melalui fungsi 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
}
Salin selepas log masuk

Nota: Fail statik tidak tersedia kepada kod apl. Oleh itu, merujuk kunci peribadi yang disimpan sebagai fail statik memerlukan konfigurasi yang teliti untuk memastikan fail itu tersedia kepada apl.

Atas ialah kandungan terperinci Bagaimana untuk Menyimpan Kunci Peribadi dengan Selamat untuk Penjanaan JWT dalam Enjin Aplikasi Google?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan