Heim  >  Artikel  >  Backend-Entwicklung  >  Ich versuche, ein JWT-Token mit dem ES256-Algorithmus zu erstellen, kann aber meinen privaten Schlüssel nicht analysieren

Ich versuche, ein JWT-Token mit dem ES256-Algorithmus zu erstellen, kann aber meinen privaten Schlüssel nicht analysieren

WBOY
WBOYnach vorne
2024-02-10 15:18:09719Durchsuche

我正在尝试使用 ES256 算法创建 jwt 令牌,但我无法解析我的私钥

php-Editor Strawberry versucht, mit dem ES256-Algorithmus ein JWT-Token zu erstellen, stößt jedoch beim Parsen des privaten Schlüssels auf ein Problem. Dies ist ein häufiges Problem, das durch einen falschen privaten Schlüssel oder ein Format verursacht werden kann, das nicht den Anforderungen entspricht. Um dieses Problem zu lösen, müssen Sie zunächst sicherstellen, dass der private Schlüssel korrekt ist und die Anforderungen des ES256-Algorithmus erfüllt. Wenn der private Schlüssel von woanders bezogen wurde, können Sie versuchen, einen neuen privaten Schlüssel neu zu generieren. Stellen Sie außerdem sicher, dass der private Schlüssel das richtige Format hat. Sie können das Format des privaten Schlüssels mit dem OpenSSL-Befehlszeilentool überprüfen. Wenn der private Schlüssel im richtigen Format vorliegt, aber dennoch nicht analysiert werden kann, kann dies andere Gründe haben, beispielsweise Berechtigungsprobleme oder Probleme bei der Umgebungskonfiguration. Bevor Sie dieses Problem lösen, können Sie zunächst die relevanten Berechtigungen und Konfigurationen überprüfen, um sicherzustellen, dass keine Auslassungen oder Fehler vorliegen.

Frageninhalt

Dies ist mein Golang-Code, der versucht, ein JWT-Token zu erstellen

package main

import (
    "encoding/pem"
    "fmt"
    "time"

    "github.com/dgrijalva/jwt-go"
)

func main() {
    // Sample PEM-encoded private key
    pemKey := `-----BEGIN EC PRIVATE KEY-----MHcCAQEEIAh5qA3rmqQQuu0vbKV/+zouz/y/Iy2pLpIcWUSyImSwoAoGCCqGSM49AwEHoUQDQgAEYD54V/vp+54P9DXarYqx4MPcm+HKRIQzNasYSoRQHQ/6S6Ps8tpMcT+KvIIC8W/e9k0W7Cm72M1P9jU7SLf/vg==-----END EC PRIVATE KEY-----`

    // Convert the PEM-encoded private key to a byte slice
    pemBytes, _ := pem.Decode([]byte(pemKey))
    // // Parse and decode the private key
    key, err := jwt.ParseECPrivateKeyFromPEM(pemBytes.Bytes)
    if err != nil {
        fmt.Println("Error parsing private key:", err)
        return
    }

    uAccessToken := jwt.NewWithClaims(jwt.SigningMethodES256, jwt.MapClaims{
        "iss":         "issuer",
        "sub":         "access token",
        "exp":         time.Now().Add(time.Minute * 20).Unix(),
    })

    AccessToken, err := uAccessToken.SignedString(key); 
    if err != nil {
        fmt.Println("Error signing token:", err)
        return
    }

    // // You now have the ECDSA private key available in the 'key' variable

    fmt.Println("ECDSA Private Key:", AccessToken)
}

Aber jedes Mal, wenn ich versuche, ein Token zu erstellen, erhalte ich diese Fehlermeldung:

<code>
Error parsing private key: Invalid Key: Key must be PEM encoded PKCS1 or PKCS8 private key
</code>

Kann jemand vorschlagen, was hier falsch läuft?

Ich versuche, ein JWT mit dem ES256-Algorithmus zu erstellen, für das ich den privaten Schlüssel benötige. Aber irgendwie erhalte ich eine Fehlermeldung.

Lösung

Erfordert zwei Korrekturen

1 – Kommentieren/Entfernen pem.Decode() Es ist der ursprüngliche PEM-Schlüssel in Bytes erforderlich.

2-Tasten-Zeichenfolge in einzeiliger Änderungsschlüsselzeichenfolge

Überprüfen Sie die Lösung hier

Das obige ist der detaillierte Inhalt vonIch versuche, ein JWT-Token mit dem ES256-Algorithmus zu erstellen, kann aber meinen privaten Schlüssel nicht analysieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen