Authentification
Chaque utilisateur Lagertha doit être authentifié pour pouvoir utiliser l'API Lagertha
Un utilisateur authentifié est un utilisateur qui dispose d'un access_token
valide
Tout les appels API authentifié doivent contenir le header Authorization
avec comme valeur Bearer <access_token>
Pour recuperer l'access_token
Lagertha, il existe deux possibilités:
- OpenId connect
- Oauth
Méthode 1: OpenId connect
Authentification après de l'API Lagertha
Envoyez une requête POST pour authentifier l'utilisateur et obtenir un access_token.
curl -X POST https://<BAS_URL>:<PORT>/auth \
-H "Content-Type: application/json" \
-d '{
"login": "<LOGIN_SUPER_ADMIN>",
"password": "<PASSWORD_SUPER_ADMIN>",
"application_id": 0,
"fingerprint": "<UNIQUE_DEVICE_ID>"
}'
réponse
{
"access_token": "<access_token>",
"token_type": "Bearer",
"refresh_token": "<refresh_token>",
"open_id": "<open_id>"
}
Stockez l'access_token
côté client pour une utilisation ultérieure.
Authentification auprès de l'API tierce
Utilisez l'open_id
pour vérifier la validité auprès de l'API tierce.
curl -X POST https://<BAS_URL>:<PORT>/oidc/verify \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <access_token_third_part_api>" \
-H "X-NONCE: <RANDOM_NONCE>" \
-H "X-FINGERPRINT: <UNIQUE_DEVICE_ID> \
-d '{
"open_id_token": "<open_id>"
}'
réponse
{
"id": "string",
"email": "string",
"firstname": "string",
"lastname": "string",
"login": "string",
"roles": [
"string"
],
"created_at": "string"
}
si le jeton est valide, vous recevrez en retour les informations de l'utilisateur
L'API tierce peux connecter le user et lui fournir son propre jeton d'authentification
Méthode 2: Oauth
Authentification auprès de l'API tierce
L'API tierce genère un code unique (state
) et verifie Auprès de l'API Lagertha si un utilisateur existe en lui fournissant sont id
curl -X GET https://<BAS_URL>:<PORT>/oauth/token?client_id=<CLIENT_ID>&state=<STATE> \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <access_token_third_part_api>" \
-H "X-NONCE: <RANDOM_NONCE>" \
-H "X-FINGERPRINT: <UNIQUE_DEVICE_ID> \
en retour, l'API tierce récupere un authorisation_code
{
"authorization_code": "string"
}
L'API tierce peux connecter le user en lui fournissant son jeton d'accès + l'authorisation_code
ainsi que le state
généré
Validation et echange de l'authorisation_code
le client peux desormais echanger son authorisation_code
contre un access_token
auprès de l'API Lagertha
curl -X POST https://<BAS_URL>:<PORT>/oauth/authorize \
-H "Content-Type: application/json" \
-d '{
"authorization_code": "<AUTHORIZATION_CODE>",
"state": "<STATE>",
"application_id": 0,
"fingerprint": "<UNIQUE_DEVICE_ID>"
}'
en retour, vous récuperez un access_token
{
"access_token": "<access_token>",
"token_type": "Bearer",
"refresh_token": "<refresh_token>",
"open_id": "<open_id>"
}
Utilisation du Refresh Token
Un refresh_token
est également retourné lors de l'authentification initiale. Ce token permet d'obtenir un nouveau access_token sans nécessiter une ré-authentification complète.
Renouvellement du Access Token
Pour renouveler un access_token, envoyez une requête POST avec le refresh_token.
curl -X POST https://<BASE_URL>:<PORT>/auth/refresh \
-H "Content-Type: application/json" \
-d '{
"refresh_token": "<refresh_token>",
"application_id": 0,
"fingerprint": "<UNIQUE_DEVICE_ID>"
}'
Réponse:
{
"access_token": "<new_access_token>",
"token_type": "Bearer",
"refresh_token": "<new_refresh_token>"
}
Stockez le nouveau access_token et refresh_token côté client pour une utilisation ultérieure.
Authentification à Deux Facteurs (MFA)
Pour améliorer la sécurité, l'API Lagertha supporte l'authentification à deux facteurs (MFA). Cela ajoute une couche de sécurité supplémentaire en exigeant un code de vérification en plus du mot de passe.
Activation de la MFA
Pour activer la MFA, l'utilisateur doit générer un code TOTP (Time-based One-Time Password).
curl -X GET https://<BASE_URL>:<PORT>/users/2fa/code \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <access_token>"
Réponse:
{
"totp_url": "<totp_url>"
}
L'utilisateur peut utiliser cette URL pour configurer son application d'authentification (comme Google Authenticator).
Vérification et Activation de la MFA
L'utilisateur vérifie le code TOTP pour activer la MFA.
curl -X PUT https://<BASE_URL>:<PORT>/users/2fa/activate \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <access_token>" \
-d '{
"code": "<TOTP_CODE>",
"is_activate": true
}'
Authentification avec MFA
Après avoir activé la MFA, l'utilisateur doit fournir le code TOTP à chaque connexion.
curl -X POST https://<BASE_URL>:<PORT>/auth \
-H "Content-Type: application/json" \
-d '{
"login": "<LOGIN_SUPER_ADMIN>",
"password": "<PASSWORD_SUPER_ADMIN>",
"application_id": 0,
"fingerprint": "<UNIQUE_DEVICE_ID>",
"code_2fa": "<TOTP_CODE>"
}'
Réponse :
{
"access_token": "<access_token>",
"token_type": "Bearer",
"refresh_token": "<refresh_token>",
"open_id": "<open_id>"
}