ホームページ > バックエンド開発 > Golang > 安全な JWT 署名のためにファイルから RSA キーをロードするにはどうすればよいですか?

安全な JWT 署名のためにファイルから RSA キーをロードするにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-08 18:47:02
オリジナル
773 人が閲覧しました

How to Load RSA Keys from Files for Secure JWT Signing?

安全な JWT 署名のためにファイルから RSA キーをロードする

JWT に署名するには、多くの場合、認証と整合性検証のために RSA 秘密キーの使用が必要になります。これらのキーを活用するには、ファイルからキーを抽出するプロセスを理解することが重要です。

PEM エンコードされた RSA 秘密キー

RSA プライベートを保存するための最も一般的な形式キーは PEM エンコーディングであり、「-----BEGIN RSA PRIVATE KEY-----」および「-----END RSA PRIVATE KEY-----」ヘッダーで示されます。フッター。 PEM エンコードされたキーをロードするには、次の手順を使用できます。

import (
    "crypto/x509"
    "encoding/pem"
)

func LoadPEMKey(file string) (*x509.PrivateKey, error) {
    pemBytes, err := os.ReadFile(file)
    if err != nil {
        return nil, err
    }

    block, _ := pem.Decode(pemBytes)
    return x509.ParsePKCS1PrivateKey(block.Bytes)
}
ログイン後にコピー

PKCS#8 エンコードされた RSA 秘密キー

PKCS#8 も一般的な形式ですRSA 秘密キーを保存するため。これは、キーと証明書を 1 つのファイルに保存するために、PKCS#12 形式と組み合わせて使用​​されることがよくあります。 PKCS#8 でエンコードされたキーをロードするには、次の手順に従います。

import (
    "crypto/rsa"
    "crypto/x509"
    "encoding/pem"
)

func LoadPKCS8Key(file string) (*rsa.PrivateKey, error) {
    pemBytes, err := os.ReadFile(file)
    if err != nil {
        return nil, err
    }

    block, _ := pem.Decode(pemBytes)
    return x509.ParsePKCS8PrivateKey(block.Bytes)
}
ログイン後にコピー

使用例

RSA 秘密キーを構造体にロードしたら、これを使用して JWT に署名し、署名を検証できます。例:

import (
    "crypto/rsa"
    "crypto/x509"
    "encoding/json"

    "github.com/golang-jwt/jwt/v4"
)

func SignJWT(keyFile string, claims map[string]interface{}) (string, error) {
    key, err := LoadPEMKey(keyFile)
    if err != nil {
        return "", err
    }

    token := jwt.NewWithClaims(jwt.SigningMethodRS512, jwt.MapClaims(claims))
    return token.SignedString(key)
}
ログイン後にコピー

これらの手法を利用すると、JWT の認証と認可の目的でファイルに保存されている RSA 秘密キーを効果的に活用できます。

以上が安全な JWT 署名のためにファイルから RSA キーをロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート