https://github.com/teng231/tokenmanager
Token manager, golang control flow access token.
https://github.com/teng231/tokenmanager
golang hmac-authentication jwt-tokens rsa-algorithm token
Last synced: 7 months ago
JSON representation
Token manager, golang control flow access token.
- Host: GitHub
- URL: https://github.com/teng231/tokenmanager
- Owner: teng231
- License: apache-2.0
- Created: 2021-09-20T04:19:20.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2023-03-25T09:52:08.000Z (about 2 years ago)
- Last Synced: 2024-06-20T06:38:20.130Z (about 1 year ago)
- Topics: golang, hmac-authentication, jwt-tokens, rsa-algorithm, token
- Language: Go
- Homepage:
- Size: 20.5 KB
- Stars: 3
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.MD
- License: LICENSE
Awesome Lists containing this project
README
# Tokenmanager
Control flow token generate and parse token.[](https://github.com/teng231/tokenmanager/actions/workflows/go.yml)
[](https://pkg.go.dev/github.com/teng231/tokenmanager)## Installing and Usage
```bash
go get github.com/teng231/tokenmanager
```
struct of claims example:
```json
{
"exp": 1632109978,
"iat": 1632108178,
"payload": {
"user_id": 1,
"role_id": 0
}
}
```all data store in payload.
### Alg RSA
Gen demo rsa keygen
```bash
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
```go
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
```go
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
```go
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
```go
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()
}
}
```