Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/brianvoe/sjwt
Simple JWT Golang
https://github.com/brianvoe/sjwt
authentication golang jsonwebtoken jwt simple
Last synced: 24 days ago
JSON representation
Simple JWT Golang
- Host: GitHub
- URL: https://github.com/brianvoe/sjwt
- Owner: brianvoe
- License: mit
- Created: 2019-06-20T04:06:21.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-02-01T19:54:37.000Z (4 months ago)
- Last Synced: 2024-02-02T19:21:31.454Z (4 months ago)
- Topics: authentication, golang, jsonwebtoken, jwt, simple
- Language: Go
- Homepage: https://godoc.org/github.com/brianvoe/sjwt
- Size: 36.1 KB
- Stars: 115
- Watchers: 3
- Forks: 10
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Lists
- awesome-go - sjwt - Simple jwt generator and parser. (Authentication and OAuth)
- awesome-go - sjwt - Simple jwt generator and parser. (Authentication and OAuth)
- awesome-go - sjwt - Simple jwt generator and parser. (Authentication and OAuth)
- awesome-go-cn - sjwt
- awesome-go - sjwt - Simple jwt generator and parser. (Authentication and OAuth)
- awesome-go - sjwt - Simple jwt generator and parser. (Authentication and OAuth)
- awesome-go-projects - sjwt - Simple jwt generator and parser. (Authentication and OAuth)
- awesome-go - sjwt - Simple jwt generator and parser. (Authentication and OAuth)
- awesome-go-cn - sjwt
- awesome-reader - sjwt - Simple jwt generator and parser. (Authentication and OAuth)
- awesome-go-with-stars - sjwt - Simple jwt generator and parser. (Authentication and OAuth)
- awesome-go - sjwt - Simple jwt generator and parser. (Authentication and OAuth / Contents)
- repo-1316-awesome-go-cn - sjwt
- repo-1211-awesome-go-cn - sjwt
- awesome-Char - sjwt - Simple jwt generator and parser. (Authentication and OAuth / Contents)
- awesome-go - sjwt - Simple jwt generator and parser. (Authentication and OAuth)
- Go-awesome - sjwt - Simple jwt generator and parser. (Authentication and OAuth)
- go-awesome-cn-star - sjwt - 简单的`jwt`生成器和解析器。(97) (认证和OAuth授权)
- awesome-go-zh - sjwt
- awesome-go-cn - sjwt
- awesome-go - sjwt - Simple jwt generator and parser. (Authentication and OAuth)
- awesome-go - sjwt - Simple jwt generator and parser. (Authentication and OAuth)
- awesome-go - sjwt - Simple jwt generator and parser. (Authentication and OAuth / Contents)
- awesome-go-cn - sjwt - 简单的`jwt`生成器和解析器。 (认证和OAuth授权)
- awesome-go-stars - sjwt(stars: 116) - Simple jwt generator and parser. (Authentication and OAuth)
- awesome-go - sjwt - Simple jwt generator and parser. (Authentication and OAuth)
- awesome-go - sjwt - Simple jwt generator and parser. (Authentication and OAuth)
README
![alt text](https://raw.githubusercontent.com/brianvoe/sjwt/master/logo.png)
# sjwt [![Go Report Card](https://goreportcard.com/badge/github.com/brianvoe/sjwt)](https://goreportcard.com/report/github.com/brianvoe/sjwt) [![Build Status](https://travis-ci.org/brianvoe/sjwt.svg?branch=master)](https://travis-ci.org/brianvoe/sjwt) [![codecov.io](https://codecov.io/github/brianvoe/sjwt/branch/master/graph/badge.svg)](https://codecov.io/github/brianvoe/sjwt) [![GoDoc](https://godoc.org/github.com/brianvoe/sjwt?status.svg)](https://godoc.org/github.com/brianvoe/sjwt) [![license](http://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://raw.githubusercontent.com/brianvoe/sjwt/master/LICENSE)
Simple JSON Web Token - Uses HMAC SHA-256## Example
```go
// Set Claims
claims := New()
claims.Set("username", "billymister")
claims.Set("account_id", 8675309)// Generate jwt
secretKey := []byte("secret_key_here")
jwt := claims.Generate(secretKey)
```## Example parse
```go
// Parse jwt
jwt := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
claims, _ := Parse(jwt)// Get claims
name, err := claims.GetStr("name") // John Doe
```## Example verify and validate
```go
jwt := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
secretKey := []byte("secret_key_here")// Verify that the secret signature is valid
hasVerified := Verify(jwt, secretKey)// Parse jwt
claims, _ := Parse(jwt)// Validate will check(if set) Expiration At and Not Before At dates
err := claims.Validate()
```## Example usage of registered claims
```go
// Set 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("secret_key_here")
jwt := claims.Generate(secretKey)
```## Example usage of struct to claims
```go
type Info struct {
Name string `json:"name"`
}// Marshal your struct into claims
info := Info{Name: "Billy Mister"}
claims, _ := ToClaims(info)// Generate jwt
secretKey := []byte("secret_key_here")
jwt := claims.Generate(secretKey)
```## Why?
For all the times I have needed the use of a jwt, its always been a simple HMAC SHA-256 and thats normally the use of most jwt tokens.