Categorygithub.com/teng231/tokenmanager
modulepackage
1.0.7
Repository: https://github.com/teng231/tokenmanager.git
Documentation: pkg.go.dev

# README

Tokenmanager

Control flow token generate and parse token.

Go Go Reference

Installing and Usage

go get github.com/teng231/tokenmanager

struct of claims example:

{
  "exp": 1632109978,
  "iat": 1632108178,
  "payload": {
    "user_id": 1,
    "role_id": 0
  }
}

all data store in payload.

Alg RSA

Gen demo rsa keygen

ssh-keygen -t rsa -b 4096 -m PEM -f jwtRS256.key
# Don't add passphrase
openssl rsa -in jwtRS256.key -pubout -outform PEM -out jwtRS256.key.pub
cat jwtRS256.key
cat jwtRS256.key.pub
  • Genkey
func GenKey() {
	mgr, err := CreateRSAToken("", "./test/jwtRS256.key")
	if err != nil {
		t.Fail()
	}
	tk, err := mgr.GenerateToken(Claims{UserId: 1}, 30*time.Minute)
	if err != nil {
		t.Fail()
	}
	log.Println(tk)
}

  • Parse
func ParseKey(tk string) {
	mgr, err := CreateRSAToken("./test/jwtRS256.key.pub", "")
	if err != nil {
		t.Fail()
	}
	extractor, err := mgr.ParseToken(tk)
	if err != nil {
		t.Fail()
	}
	bin, err := json.Marshal(extractor["payload"])
	if err != nil {
		t.Fail()
	}
	claim := &Claims{}
	json.Unmarshal(bin, claim)
	log.Println(claim)
	if claim.UserId != 1 {
		t.Fail()
	}
}

Alg HMAC

Hmac input need a secret path like: ./test/secret

  • Genkey
func Genkey() {
	mgr, err := CreateHMACToken("./test/secret")
	if err != nil {
		t.Fail()
	}
	tk, err := mgr.GenerateHmacToken(Claims{UserId: 1}, 30*time.Second)
	if err != nil {
		log.Print(err)
		t.Fail()
	}
	log.Println(tk)
}
  • ParseKey
func Genkey(tk string) {
	mgr, err := CreateHMACToken("./test/secret")
	if err != nil {
		log.Print(err)
		t.Fail()
	}
	extractor, err := mgr.ParseHmacToken(tk)
	if err != nil {
		log.Print(err)
		t.Fail()
	}
	bin, err := json.Marshal(extractor["payload"])
	if err != nil {
		t.Fail()
	}
	claim := &Claims{}
	json.Unmarshal(bin, claim)
	log.Println(claim)
	if claim.UserId != 1 {
		t.Fail()
	}
}

# Functions

CreateHMACToken is parse pub, priv key then init HMACToken.
CreateRSAToken is parse pub, priv key then init RSAToken.

# Constants

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Structs

Mgr create method for working jwt.
No description provided by the author