>  기사  >  백엔드 개발  >  Google App Engine에서 JWT 생성을 위한 개인 키를 안전하게 저장하는 방법은 무엇입니까?

Google App Engine에서 JWT 생성을 위한 개인 키를 안전하게 저장하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-18 21:13:02685검색

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

Google App Engine에서 개인 키 호스팅

"github.com/dgrijalva/jwt-go" 라이브러리를 사용하여 JSON 웹 토큰 생성 개인 키 사용이 포함됩니다. 이 키는 로컬에서 호스팅할 때 쉽게 활용할 수 있지만 Google App Engine(GAE)에 배포하면 파일 시스템 액세스 부족으로 인해 문제가 발생합니다.

키 저장소 옵션

GAE에서 호스팅하는 경우 개인 키를 저장하는 두 가지 기본 옵션이 있습니다.

  1. 정적 저장소: 개인 키는 앱 코드와 함께 " 정적" 파일입니다. 이는 간단한 접근 방식이지만 키에 대한 동적 변경을 허용하지 않습니다.
  2. 데이터 저장소 저장소: 개인 키는 데이터 저장소에 저장될 수 있으므로 프로그래밍 방식 액세스 및 업데이트가 가능합니다. . 그러나 이러한 방식으로 저장된 키에는 특정 보안 고려 사항이 적용될 수 있다는 점에 유의하는 것이 중요합니다.

정적 파일 저장소

개인 키를 저장하려면 키를 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.