Source File
token.go
Belonging Package
github.com/golang-jwt/jwt/v5
package jwtimport ()// Keyfunc will be used by the Parse methods as a callback function to supply// the key for verification. The function receives the parsed, but unverified// Token. This allows you to use properties in the Header of the token (such as// `kid`) to identify which key to use.//// The returned interface{} may be a single key or a VerificationKeySet containing// multiple keys.type Keyfunc func(*Token) (interface{}, error)// VerificationKey represents a public or secret key for verifying a token's signature.type VerificationKey interface {crypto.PublicKey | []uint8}// VerificationKeySet is a set of public or secret keys. It is used by the parser to verify a token.type VerificationKeySet struct {Keys []VerificationKey}// Token represents a JWT Token. Different fields will be used depending on// whether you're creating or parsing/verifying a token.type Token struct {Raw string // Raw contains the raw token. Populated when you [Parse] a tokenMethod SigningMethod // Method is the signing method used or to be usedHeader map[string]interface{} // Header is the first segment of the token in decoded formClaims Claims // Claims is the second segment of the token in decoded formSignature []byte // Signature is the third segment of the token in decoded form. Populated when you Parse a tokenValid bool // Valid specifies if the token is valid. Populated when you Parse/Verify a token}// New creates a new [Token] with the specified signing method and an empty map// of claims. Additional options can be specified, but are currently unused.func ( SigningMethod, ...TokenOption) *Token {return NewWithClaims(, MapClaims{}, ...)}// NewWithClaims creates a new [Token] with the specified signing method and// claims. Additional options can be specified, but are currently unused.func ( SigningMethod, Claims, ...TokenOption) *Token {return &Token{Header: map[string]interface{}{"typ": "JWT","alg": .Alg(),},Claims: ,Method: ,}}// SignedString creates and returns a complete, signed JWT. The token is signed// using the SigningMethod specified in the token. Please refer to// https://golang-jwt.github.io/jwt/usage/signing_methods/#signing-methods-and-key-types// for an overview of the different signing methods and their respective key// types.func ( *Token) ( interface{}) (string, error) {, := .SigningString()if != nil {return "",}, := .Method.Sign(, )if != nil {return "",}return + "." + .EncodeSegment(), nil}// SigningString generates the signing string. This is the most expensive part// of the whole deal. Unless you need this for something special, just go// straight for the SignedString.func ( *Token) () (string, error) {, := json.Marshal(.Header)if != nil {return "",}, := json.Marshal(.Claims)if != nil {return "",}return .EncodeSegment() + "." + .EncodeSegment(), nil}// EncodeSegment encodes a JWT specific base64url encoding with padding// stripped. In the future, this function might take into account a// [TokenOption]. Therefore, this function exists as a method of [Token], rather// than a global function.func (*Token) ( []byte) string {return base64.RawURLEncoding.EncodeToString()}
![]() |
The pages are generated with Golds v0.7.6. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |