Heim > Backend-Entwicklung > Golang > Wie erhalte ich das Ablaufdatum vom JWT-Token in Go?

Wie erhalte ich das Ablaufdatum vom JWT-Token in Go?

PHPz
Freigeben: 2024-02-14 12:20:09
nach vorne
1023 Leute haben es durchsucht

如何从 go 中的 jwt 令牌获取过期日期?

In der Go-Sprache ist das JWT-Token ein gängiger Authentifizierungsmechanismus. Um das Ablaufdatum des JWT-Tokens abzurufen, können wir die Drittanbieterbibliothek „github.com/dgrijalva/jwt-go“ verwenden, um die Nutzlast des Tokens zu analysieren. Zuerst müssen wir die Token-Zeichenfolge in ein jwt.Token-Objekt analysieren und dann können wir das Ablaufdatum abrufen, indem wir auf das Feld Token.Claims["exp"] zugreifen. Der Wert dieses Feldes ist ein Unix-Zeitstempel, der mit der Funktion time.Unix in einen Zeittyp konvertiert werden kann. Auf diese Weise können wir leicht das Ablaufdatum des JWT-Tokens ermitteln.

Frageninhalt

Ich habe einen JWT-Token und kann den entschlüsselten Token auf der https://jwt.io/-Website sehen. Es ist nicht erforderlich, dass ich irgendwelche Geheimnisse oder Ansprüche aufstelle. Deshalb suche ich nach einer Möglichkeit, den Token zu entschlüsseln, um das Ablaufdatum zu ermitteln, ohne ein Geheimnis preiszugeben.

Ich verwende die Bibliothek ngopkg.in/square/go-jose.v2/jwt und unten ist mein Code:

token, err := jwt.ParseSigned(jwtToken)
Nach dem Login kopieren

Rückgabewert token Es gibt ein Header-Feld, das die Schlüssel-ID und den Algorithmus enthält, mir aber nicht das Ablaufdatum anzeigt.

Ich habe dieses Thema durchsucht und die Leute sagten, ich solle github.com/auth0/go-jwt-middleware/v2/validator 库,但它需要设置密钥/秘密。解析令牌的过期日期是否需要秘密。 网站https://jwt.io/Woher weiß ich das Ablaufdatum?

Problemumgehung

Mit dem Beispiel-JWT-Token von jwt.io Dieser Code analysiert und ruft Ansprüche ohne verifizierte Signaturen ab:

func main() {
    raw := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"

    t, err := jwt.ParseSigned(raw)
    if err != nil {
        panic(err)
    }

    var claims map[string]any
    if err := t.UnsafeClaimsWithoutVerification(&claims); err != nil {
        panic(err)
    }

    fmt.Println(claims)
}
Nach dem Login kopieren

In diesem Beispiel sollte die Ablaufzeit als claims 映射中的字段之一。要检索它,请使用 exp, ok := claims["expire"] erscheinen (abhängig vom genauen Namen).

Das obige ist der detaillierte Inhalt vonWie erhalte ich das Ablaufdatum vom JWT-Token in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage