Service développeur EL OUATINE
« Se connecter avec EL OUATINE »
Épargnez un nouveau compte à vos utilisateurs : un bouton les connecte avec leur compte EL OUATINE. Vous recevez un identifiant fiable (plus le nom et l’e-mail sur demande) — le mot de passe ne quitte jamais notre plateforme.
Créer un client OAuthGuide d’intégrationDepuis votre compte sur la plateforme
Comment ça marche ?
Flux OAuth2 standard — code d’autorisation (Authorization Code)
1
1. Créez un clientDepuis votre compte : nom de l’application + URIs de redirection autorisées. Vous recevez un client_id et un client_secret — le secret n’est affiché qu’une seule fois.
2
2. Redirigez l’utilisateurEnvoyez-le vers /oauth/authorize avec client_id, redirect_uri et les portées demandées (profile, email).
3
3. Écran de consentementL’utilisateur voit le nom de votre application et les permissions demandées, puis accepte ou refuse — votre application ne voit jamais son mot de passe.
4
4. Échangez le codeVous recevez un code (code) valable 10 minutes pour un usage unique — échangez-le via /oauth/token contre un jeton d’accès (1 heure).
5
5. Lisez le profilAppelez /oauth/userinfo avec le jeton : vous obtenez l’identifiant et le nom, et l’e-mail uniquement si la portée email a été demandée.
Portées (Scopes)
profile — Identifiant + nom — le minimum pour toute connexion.email — Adresse e-mail enregistrée — accordée uniquement avec le consentement explicite de l’utilisateur.
Guide d’intégration
- Créez un client et stockez le secret
POST /api/oauth/v1/clients depuis une session connectée — le client_secret n’est affiché qu’une seule fois. Stockez-le sur votre serveur, jamais dans le code front-end. - Redirigez l’utilisateur vers le consentement
GET /oauth/authorize?client_id=…&redirect_uri=…&response_type=code&scope=profile%20email&state=… — le redirect_uri doit correspondre exactement à une URI enregistrée. - Échangez le code contre un jeton
POST /oauth/token sous 10 minutes : {grant_type:"authorization_code", code, redirect_uri, client_id, client_secret}. - Lisez le profil utilisateur
GET /oauth/userinfo avec Authorization: Bearer <access_token> — le jeton est valable une heure.
Exemple : échange du code (curl)
curl -X POST https://securecelleouatine.com/oauth/token \
-H "Content-Type: application/json" \
-d '{
"grant_type": "authorization_code",
"code": "RECEIVED_CODE",
"redirect_uri": "https://your-app.example/callback",
"client_id": "eloauth_YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET"
}'Exemple : lecture du profil (JavaScript)
const res = await fetch('https://securecelleouatine.com/oauth/userinfo', {
headers: { 'Authorization': 'Bearer ' + accessToken }
});
const profile = await res.json(); // { sub, name, email? }
if (res.status === 401) { /* jeton expiré ou révoqué — rediriger vers le consentement */ }Limites
- Code d’autorisation : 10 minutes, usage unique — toute réutilisation est refusée.
- Jeton d’accès : 1 heure, pas de jetons de rafraîchissement (nouveau consentement ensuite).
- redirect_uri : doit correspondre exactement à une URI enregistrée — https obligatoire (http autorisé pour localhost en développement).
- Point /oauth/token limité : 30 requêtes/minute par client.
- Les secrets sont stockés hachés (SHA-256) et ne sont jamais journalisés.
Non implémenté pour le moment: Pas de découverte OIDC (.well-known) ni de jetons ID, pas de jetons de rafraîchissement, pas encore de PKCE — le sous-ensemble OAuth2 du code d’autorisation est implémenté.