Heim > Artikel > Backend-Entwicklung > Wie erhalte ich das Ablaufdatum vom JWT-Token in Go?
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.
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)
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?
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) }
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!