jwt

package module
v0.0.0-...-3575fb9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 31, 2021 License: MIT Imports: 14 Imported by: 2

README

JWT

JSON Web Token library

Build Status Go Report Card Codecov Go Reference License

Supported Algorithms

  • HS256
  • HS384
  • HS512
  • RS256
  • RS384
  • RS512
  • ES256
  • ES384
  • ES512
  • PS256
  • PS384
  • PS512

Usage

Sign
package main

import (
	"fmt"
	"log"

	"github.com/nasermirzaei89/jwt"
)

func main() {
	token := jwt.New(jwt.HS256)
	tokenStr, err := jwt.Sign(*token, []byte("secret_key"))
	if err != nil {
		log.Fatalln(err)
	}

	fmt.Println(tokenStr) // eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.HUfJqC1q8JUPKD4jj8PZAYppSrQRL8tJHTljdcTfFCQ
}
Verify
package main

import (
	"log"

	"github.com/nasermirzaei89/jwt"
)

func main() {
	tokenStr := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.HUfJqC1q8JUPKD4jj8PZAYppSrQRL8tJHTljdcTfFCQ"
	err := jwt.Verify(tokenStr, []byte("secret_key"))
	if err != nil {
		log.Fatalln(err)
	}
}
Sign With Claims
package main

import (
	"fmt"
	"log"
	"time"

	"github.com/nasermirzaei89/jwt"
)

func main() {
	token := jwt.New(jwt.HS256)
	token.SetIssuer("https://yourdomain.tld")
	token.SetExpirationTime(time.Now())
	tokenStr, err := jwt.Sign(*token, []byte("secret_key"))
	if err != nil {
		log.Fatalln(err)
	}

	fmt.Println(tokenStr) // variable
}

Documentation

Index

Constants

View Source
const (
	ClaimIssuer         = "iss"
	ClaimSubject        = "sub"
	ClaimAudience       = "aud"
	ClaimExpirationTime = "exp"
	ClaimNotBefore      = "nbf"
	ClaimIssuedAt       = "iat"
	ClaimJWTID          = "jti"
)

Registered Claim Names.

Variables

View Source
var (
	ErrClaimNotFound            = errors.New("claim not found")
	ErrInvalidClaimType         = errors.New("invalid claim type")
	ErrTokenExpired             = errors.New("token expired")
	ErrTokenShouldNotBeAccepted = errors.New("token should not be accepted for processing yet")
	ErrInvalidToken             = errors.New("invalid token provided")
	ErrInvalidTokenSignature    = errors.New("invalid token signature")
	ErrUnsupportedAlgorithm     = errors.New("unsupported algorithm")
	ErrUnsupportedTokenType     = errors.New("unsupported token type")
	ErrInvalidPem               = errors.New("invalid pem received")
)

Functions

func Sign

func Sign(token Token, key []byte) (string, error)

Sign the token with secret key.

func Verify

func Verify(t string, key []byte) error

Verify token string with secret key.

Types

type Algorithm

type Algorithm string

Algorithm is json web token algorithm.

const (
	HS256 Algorithm = "HS256"
	HS384 Algorithm = "HS384"
	HS512 Algorithm = "HS512"
	RS256 Algorithm = "RS256"
	RS384 Algorithm = "RS384"
	RS512 Algorithm = "RS512"
)

Algorithms.

type Header struct {
	Algorithm Algorithm `json:"alg"`
	Type      string    `json:"typ"`
}

Header is json web token header.

type Payload

type Payload map[string]interface{}

Payload is json web token payload.

type Token

type Token struct {
	// contains filtered or unexported fields
}

Token struct.

func New

func New(alg Algorithm) *Token

New returns new json web token.

func Parse

func Parse(t string) (*Token, error)

Parse token string without verifying.

func (Token) Get

func (t Token) Get(key string) (interface{}, error)

func (Token) GetAudience

func (t Token) GetAudience() ([]string, error)

func (Token) GetExpirationTime

func (t Token) GetExpirationTime() (time.Time, error)

func (Token) GetHeader

func (t Token) GetHeader() Header

func (Token) GetIssuedAt

func (t Token) GetIssuedAt() (time.Time, error)

func (Token) GetIssuer

func (t Token) GetIssuer() (string, error)

func (Token) GetJWTID

func (t Token) GetJWTID() (string, error)

func (Token) GetNotBefore

func (t Token) GetNotBefore() (time.Time, error)

func (Token) GetPayload

func (t Token) GetPayload() Payload

func (Token) GetSubject

func (t Token) GetSubject() (string, error)

func (*Token) Set

func (t *Token) Set(key string, value interface{})

func (*Token) SetAudience

func (t *Token) SetAudience(aud ...string)

func (*Token) SetExpirationTime

func (t *Token) SetExpirationTime(exp time.Time)

func (*Token) SetIssuedAt

func (t *Token) SetIssuedAt(iat time.Time)

func (*Token) SetIssuer

func (t *Token) SetIssuer(iss string)

func (*Token) SetJWTID

func (t *Token) SetJWTID(jti string)

func (*Token) SetNotBefore

func (t *Token) SetNotBefore(nbf time.Time)

func (*Token) SetSubject

func (t *Token) SetSubject(sub string)

func (Token) Validate

func (t Token) Validate() error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL