go-jwtserver/README.md

1.7 KiB

Go-JWTServer

Go-JWTServer met a disposition :

  • Un serveur de stockage de utilisateur sous postgres et d'authenfication Jwt
  • Un middleware d'authentification Jwt

Dépendances: docker, docker-compose

Serveur

Configuration

Editer le ficher .env

## Server
web_adress=":3001"

## Postgres
db_user="jwtserver"
db_pass="jwtserver"
db_name="jwtserver"
db_host="localhost"

## JWT
token_password="NotSoSecretJwtSecretPassword"

Executer le serveur

Lancer le conteneur postgres make up

Dans une autre console, lancer le serveur jwt make run

Middleware

Le middleware permet d'enregistrer et d'authentifier un utilisateur et de vérifier la validité du token Jwt

Exemple
r := chi.NewRouter()

//add Jwt Authentification
r.Use(jwtmiddleware.JwtAuthentication)

.Route("/api/", func(r chi.Router) {
	//Middleware routes
	r.Post("/user/new", jwtmiddleware.CreateAccount)
	r.Post("/user/login", jwtmiddleware.Authenticate)
})

API

Enregistrer un utilisateur
POST {{host}}/api/user/new 
content-type: application/json

{
    "email": "test@test.com",
    "password": "test"
}
Authentifier un utilisateur
POST {{host}}/api/user/login 
content-type: application/json

{
    "email": "test@test.com",
    "password": "test"
}
Réponse
{
  "account": {
    "ID": 1,
    "CreatedAt": "2020-07-15T14:08:22.288502Z",
    "UpdatedAt": "2020-07-15T14:08:22.288502Z",
    "DeletedAt": null,
    "email": "test@test.com",
    "password": "",
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VySWQiOjF9.-bV_jRNcykDMsI-vjxKbiNBsEwqSfDspEEjBTE2nds8"
  },
  "message": "Logged In",
  "status": true
}