Skip to content

tm-wong/auth-service

Repository files navigation

****************************************************************
Auth Service - REST API
T. M. Wong

****************************************************************

Installation

Clone du dépôt

git clone [email protected]:tm-wong/auth-service.git

Créer un utilisateur PostgreSQL

psql -U superuser -d db_auth_service
CREATE ROLE authsce SUPERUSER LOGIN PASSWORD 'xxx';

Le modèle de la base de données est disponible dans le répertoire SQL (db_auth_service.sql) de ce dépôt, à noter évidemment, qu'il convient de remplacer les données placées en eéchantillon par de véritables données, le moment venu.


1 - Sécurité

Cette API d'authentification permet de récupérer un JSON Web Token en échange d'un nom d'utilisateur et d'un mot de passe, permettant l'accès à une application déchiffrant le token et vérifiant par là l'identité de l'utilisateur.

Pour l'utilisation de ce token, consulter la section 4 "Utilisation du token", un peu plus bas.


2 - Stack

Cette application est construite avec Fastify en node.js (v18.15.0) et PostgreSQL (v15.x)

La base URL de cette application est la suivante :           https://limitless-savannah-34441-943d2c48f28e.herokuapp.com


3 - Documentation de l'API

Une documentation des routes implémentées est consultable à partir de l'URL suivante :           https://limitless-savannah-34441-943d2c48f28e.herokuapp.com/api/doc

Celle-ci liste chacune des routes avec des exemples d'utilisation.


4 - Error handling

La gestion d'erreurs est assez aisée à mettre en œuvre de façon limpide avec Fastify, puisque en plus d'un dispositif de catchall situé dans le script principal, Fastify est packagé avec son interface de gestion d'erreurs dédiée et permettant d'émettre des erreurs HTTP de façon plutôt simple.


Les logs

L'application est pourvue d'un catchall pour les logs d'erreurs non catchées.

Il convient toutefois de prévoir de logger celles-ci à l'issue de l'exécution des méthodes les plus sujettes aux imprévus.

Les logs d'appel HTTP et autres sont configurés à l'emplacement /var/log/auth-service/.


5 - Utilisation du token

Requérir un token

curl -i -X POST \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{ "user_name": "efinkle0", "passw": "xxxx" }' \
https://server.com/api/auth


HTTP/1.1 200 OK
vary: Origin
access-control-allow-origin: *
content-type: application/json; charset=utf-8
content-length: 988
Date: Sun, 23 Jul 2023 19:57:54 GMT
Connection: keep-alive
Keep-Alive: timeout=72

{
  "access_token": "eyJhbGciOiJSUzI1NiJ9.eyJ1c2VyX25h...",
  "expires_in": 10800,
  "token_type": "Bearer"
}

Utiliser un token

export TOKEN='eyJhbGciOiJSUzI1NiJ9.eyJ1c2VyX25hbWUiOiJlZmlua2xlMCIsImlzcyI6ImF1...'
curl -i \
-H "Authorization: Bearer $TOKEN" \
https://my-super-app.com/api/some/private/route

HTTP/1.1 200 OK
Server: Cowboy
Connection: keep-alive
Vary: Origin
Access-Control-Allow-Origin: *
Content-Type: application/json; charset=utf-8
Content-Length: 1871
Date: Tue, 20 Jun 2023 17:35:28 GMT
Via: 1.1 vegur

.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published