Documentation
¶
Overview ¶
Example ¶
// Add Claims
claims := New()
claims.Set("username", "billymister")
claims.Set("account_id", 8675309)
// Generate jwt
secretKey := []byte("0123456789abcdef0123456789abcdef")
jwt, err := claims.Generate(secretKey)
if err != nil {
panic(err)
}
fmt.Println(jwt)
Example (ClaimsToStruct) ¶
type Info struct {
Name string `json:"name"`
}
// Create jwt
secretKey := []byte("0123456789abcdef0123456789abcdef")
claims := New()
claims.Set("name", "Billy Mister")
jwt, err := claims.Generate(secretKey)
if err != nil {
panic(err)
}
// Parse jwt
parsed, err := Parse(jwt)
if err != nil {
panic(err)
}
// Marshal your struct into claims
info := Info{}
if err := parsed.ToStruct(&info); err != nil {
panic(err)
}
name, _ := parsed.GetStr("name")
fmt.Println(name)
Output: Billy Mister
Example (Parse) ¶
// Create jwt
secretKey := []byte("0123456789abcdef0123456789abcdef")
claims := New()
claims.Set("name", "John Doe")
jwt, err := claims.Generate(secretKey)
if err != nil {
panic(err)
}
// Parse jwt (signature still needs to be verified separately)
parsed, err := Parse(jwt)
if err != nil {
panic(err)
}
// Get claims
name, _ := parsed.GetStr("name")
fmt.Println(name)
Output: John Doe
Example (Parse_roundTrip) ¶
secretKey := []byte("0123456789abcdef0123456789abcdef")
claims := New()
claims.Set("name", "Billy Mister")
token, err := claims.Generate(secretKey)
if err != nil {
panic(err)
}
parsedClaims, err := Parse(token)
if err != nil {
panic(err)
}
fmt.Println(parsedClaims.Has("name"))
Output: true
Example (PublicClaims) ¶
// Add Claims
claims := New()
claims.Set("username", "billymister")
claims.Set("account_id", 8675309)
// Generate jwt
secretKey := []byte("0123456789abcdef0123456789abcdef")
jwt, err := claims.Generate(secretKey)
if err != nil {
panic(err)
}
fmt.Println(jwt)
Example (RegisteredClaims) ¶
// Add Claims
claims := New()
claims.SetTokenID() // UUID generated
claims.SetSubject("Subject Title") // Subject of the token
claims.SetIssuer("Google") // Issuer of the token
claims.SetAudience([]string{"Google", "Facebook"}) // Audience the toke is for
claims.SetIssuedAt(time.Now()) // IssuedAt in time, value is set in unix
claims.SetNotBeforeAt(time.Now().Add(time.Hour * 1)) // Token valid in 1 hour
claims.SetExpiresAt(time.Now().Add(time.Hour * 24)) // Token expires in 24 hours
// Generate jwt
secretKey := []byte("0123456789abcdef0123456789abcdef")
jwt, err := claims.Generate(secretKey)
if err != nil {
panic(err)
}
fmt.Println(jwt)
Example (StructToClaims) ¶
type Info struct {
Name string `json:"name"`
}
// Marshal your struct into claims
info := Info{Name: "Billy Mister"}
claims, err := ToClaims(info)
if err != nil {
panic(err)
}
// Generate jwt
secretKey := []byte("0123456789abcdef0123456789abcdef")
jwt, err := claims.Generate(secretKey)
if err != nil {
panic(err)
}
fmt.Println(len(jwt) > 0)
Output: true
Example (VerifySignature) ¶
secretKey := []byte("0123456789abcdef0123456789abcdef")
claims := New()
claims.Set("name", "Billy Mister")
token, err := claims.Generate(secretKey)
if err != nil {
panic(err)
}
verified := Verify(token, secretKey)
fmt.Println(verified)
Output: true
Index ¶
- Constants
- Variables
- func ID() string
- func Verify(tokenStr string, secret []byte) bool
- type Claims
- func (c Claims) Del(name string)
- func (c Claims) DeleteAudience()
- func (c Claims) DeleteExpiresAt()
- func (c Claims) DeleteIssuedAt()
- func (c Claims) DeleteIssuer()
- func (c Claims) DeleteNotBeforeAt()
- func (c Claims) DeleteSubject()
- func (c Claims) DeleteTokenID()
- func (c Claims) Generate(secret []byte) (string, error)
- func (c Claims) Get(name string) (any, error)
- func (c Claims) GetAudience() ([]string, error)
- func (c Claims) GetBool(name string) (bool, error)
- func (c Claims) GetExpiresAt() (int64, error)
- func (c Claims) GetFloat(name string) (float64, error)
- func (c Claims) GetInt(name string) (int, error)
- func (c Claims) GetIssuedAt() (int64, error)
- func (c Claims) GetIssuer() (string, error)
- func (c Claims) GetNotBeforeAt() (int64, error)
- func (c Claims) GetStr(name string) (string, error)
- func (c Claims) GetSubject() (string, error)
- func (c Claims) GetTokenID() (string, error)
- func (c Claims) Has(name string) bool
- func (c Claims) Set(name string, value any)
- func (c Claims) SetAudience(audience []string)
- func (c Claims) SetExpiresAt(expiresAt time.Time)
- func (c Claims) SetIssuedAt(issuedAt time.Time)
- func (c Claims) SetIssuer(issuer string)
- func (c Claims) SetNotBeforeAt(notbeforeAt time.Time)
- func (c Claims) SetSubject(subject string)
- func (c Claims) SetTokenID()
- func (c Claims) ToStruct(struc any) error
- func (c Claims) Validate() error
Examples ¶
Constants ¶
const ( // TokenID is a unique identifier for this token TokenID = "jti" // Issuer is the principal that issued the token Issuer = "iss" // Audience identifies the recipents the token is intended for Audience = "aud" // Subject is the subject of the token Subject = "sub" // IssuedAt is a timesatamp for when the token was issued IssuedAt = "iat" // ExpiresAt is a timestamp for when the token should expire ExpiresAt = "exp" // NotBeforeAt is a timestamp for which this token should not be excepted until NotBeforeAt = "nbf" )
Variables ¶
var ( // ErrNotFound is an error string clarifying // that the attempted key does not exist in the claims ErrNotFound = errors.New("claim key not found in claims") // ErrClaimValueInvalid is an error string clarifying // that the attempt to retrieve a value could not be properly converted ErrClaimValueInvalid = errors.New("claim value invalid") // ErrTokenInvalid is an error string clarifying // the provided token is an invalid format ErrTokenInvalid = errors.New("token is invalid") // ErrTokenHasExpired is an error string clarifying // the current unix timestamp has exceed the exp unix timestamp ErrTokenHasExpired = errors.New("token has expired") // ErrTokenNotYetValid is an error string clarifying // the current unix timestamp has not exceeded the nbf unix timestamp ErrTokenNotYetValid = errors.New("token is not yet valid") // ErrTokenSignatureInvalid clarifies the token signature did not match the expected value ErrTokenSignatureInvalid = errors.New("token signature invalid") // ErrTokenHeaderInvalid clarifies the token header is malformed or unsupported ErrTokenHeaderInvalid = errors.New("token header invalid") // ErrTokenAlgorithmMismatch clarifies that the token algorithm does not match the supported algorithm ErrTokenAlgorithmMismatch = errors.New("token algorithm mismatch") // ErrSecretTooShort clarifies that the provided secret is weaker than the minimum required length ErrSecretTooShort = errors.New("secret key too short; use at least 32 random bytes") )
Functions ¶
Types ¶
type Claims ¶
Claims is the main container for our body information
func Parse ¶ added in v0.3.0
Parse takes in the token string and returns the claims payload (without verifying the signature)
func (Claims) DeleteExpiresAt ¶
func (c Claims) DeleteExpiresAt()
DeleteExpiresAt deletes expires at
func (Claims) DeleteNotBeforeAt ¶
func (c Claims) DeleteNotBeforeAt()
DeleteNotBeforeAt deletes not before at
func (Claims) GetAudience ¶
GetAudience will get the audience set on the Claims
func (Claims) GetExpiresAt ¶
GetExpiresAt will get the expires at timestamp set on the Claims
func (Claims) GetIssuedAt ¶
GetIssuedAt will get the issued at timestamp set on the Claims
func (Claims) GetNotBeforeAt ¶
GetNotBeforeAt will get the not before at timestamp set on the Claims
func (Claims) GetSubject ¶
GetSubject will get the subject set on the Claims
func (Claims) GetTokenID ¶
GetTokenID will get the id set on the Claims
func (Claims) SetAudience ¶
SetAudience will set a string value for the audience
func (Claims) SetExpiresAt ¶
SetExpiresAt will set an expires at timestamp in nanoseconds
func (Claims) SetIssuedAt ¶
SetIssuedAt will set an issued at timestamp in nanoseconds
func (Claims) SetNotBeforeAt ¶
SetNotBeforeAt will set an not before at timestamp in nanoseconds
func (Claims) SetSubject ¶
SetSubject will set a subject value

