Aller au contenu principal

Intégration depuis n'importe quel langage

SyAuth est un fournisseur OAuth 2.0 / OpenID Connect standard. Vous pouvez l'intégrer depuis n'importe quel langage de programmation capable de faire des requêtes HTTP.


Vous créez un service backend ? Si vous créez un daemon, CLI, ou service qui interagit avec SyAuth directement (sans utilisateur humain présent), consultez le Guide Machine-to-Machine.


Prérequis

  • Une Application SyAuth créée dans le Tableau de bord
  • Votre client_id et redirect_uri
  • Compréhension de base d'OAuth 2.0

Aperçu du Flux OAuth 2.0

1. Générer code_verifier et code_challenge PKCE
2. Rediriger l'utilisateur vers /oauth/authorize
3. L'utilisateur se connecte et autorise
4. SyAuth redirige avec le code d'autorisation
5. Échanger le code contre des tokens à /oauth/token/
6. Utiliser access_token pour appeler les APIs
7. Rafraîchir le token quand expiré

Étape 1 : Générer les Paramètres PKCE

PKCE (Proof Key for Code Exchange) est requis pour la sécurité.

Générer code_verifier

Créez une chaîne aléatoire de 43-128 caractères utilisant des caractères URL-safe :

import secrets
import base64

code_verifier = base64.urlsafe_b64encode(secrets.token_bytes(32)).decode('utf-8').rstrip('=')

Générer code_challenge

Hash SHA256 du code_verifier, puis encoder en base64url :

import hashlib

code_challenge = base64.urlsafe_b64encode(
hashlib.sha256(code_verifier.encode('utf-8')).digest()
).decode('utf-8').rstrip('=')

Étape 2 : Rediriger vers le Point d'Autorisation

Construisez l'URL d'autorisation et redirigez l'utilisateur :

https://api.syauth.com/e/v1/oauth/authorize?
response_type=code
&client_id=VOTRE_CLIENT_ID
&redirect_uri=VOTRE_REDIRECT_URI
&scope=openid profile email
&state=CHAINE_STATE_ALEATOIRE
&code_challenge=CODE_CHALLENGE_ICI
&code_challenge_method=S256

Paramètres :

  • response_type : Toujours code
  • client_id : L'ID client de votre application
  • redirect_uri : Doit correspondre exactement à ce qui est configuré dans le tableau de bord
  • scope : Scopes séparés par des espaces (ex : openid profile email)
  • state : Chaîne aléatoire pour prévenir CSRF (vérifiez qu'elle correspond au callback)
  • code_challenge : Généré à l'étape 1
  • code_challenge_method : Toujours S256

Étape 3 : Gérer le Callback

Après la connexion, SyAuth redirige vers votre redirect_uri avec :

https://votre-app.com/callback?
code=CODE_AUTORISATION
&state=MEME_STATE_ENVOYE
  1. Vérifiez que state correspond à ce que vous avez envoyé
  2. Extrayez le paramètre code
  3. Échangez-le contre des tokens (Étape 4)

Étape 4 : Échanger le Code contre des Tokens

Faites une requête POST vers le point de token :

curl -X POST https://api.syauth.com/e/v1/oauth/token/ \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=authorization_code" \
-d "code=CODE_AUTORISATION" \
-d "client_id=VOTRE_CLIENT_ID" \
-d "redirect_uri=VOTRE_REDIRECT_URI" \
-d "code_verifier=CODE_VERIFIER_ETAPE1"

Réponse :

{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"id_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."
}

Étape 5 : Utiliser l'Access Token

Incluez l'access token (de la réponse de l'étape 4) dans les requêtes API :

# Remplacez ACCESS_TOKEN par la valeur "access_token" reçue à l'étape 4
curl https://api.syauth.com/e/v1/user/profile/ \
-H "Authorization: Bearer ACCESS_TOKEN_ICI"

Étape 6 : Rafraîchir le Token

Quand l'access token expire (après 1 heure), utilisez le refresh token :

curl -X POST https://api.syauth.com/e/v1/oauth/token/ \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=refresh_token" \
-d "refresh_token=REFRESH_TOKEN_ICI" \
-d "client_id=VOTRE_CLIENT_ID"

Prochaines étapes


Besoin d'aide ?

  • Pour plus de commodité, utilisez nos SDKs (Next.js, Django)