Passer au contenu
Français
  • Il n'y a aucune suggestion car le champ de recherche est vide.

Authentification API Partenaire : Authorization Code 

Cet article présente le mode d'authentification pour les Partenaires : Authorization Code

Sommaire

1) Déroulement du flux Authorization Code
     Étape 1 : Entrée côté partenaire et redirection vers Inqom
     Étape 2 : Récupération du code dans l'URL de retour
     Étape 3 : Echange du code contre les jetons
2) Gestion des erreurs
     Erreur lors de la redirection
     Erreur lors de l'échange du token

 

1) Déroulement du flux Authorization Code

Le flux Authorization Code est le mode d'authentification recommandé pour toutes les intégrations partenaires.

L'application partenaire s'authentifie avec ses propres identifiants (client_id et client_secret). L'utilisateur, quant à lui, se connecte directement sur Inqom afin de donner son consentement. À aucun moment le partenaire ne manipule les identifiants Inqom de l'utilisateur.

Le processus se déroule en trois étapes.

Étape 1 :  Entrée côté partenaire et redirection vers Inqom

Lorsque l'utilisateur accède à votre page de connexion (par exemple https://partenaire-name.fr/login-from-inqom), votre application doit :

  • Générer un state cryptographiquement aléatoire (anti-CSRF), le stocker en session serveur, et le placer dans la requête.

  • (Optionnel mais recommandé) Générer un nonce pour l'id_token et le stocker également.

  • Rediriger l'utilisateur (HTTP 302)vers la page d'authentification d'Inqom :

GET https://auth.inqom.com/identity/connect/authorize
?response_type=code
&client_id=<client_id>
&redirect_uri=<redirect_uri>
&scope=<scope>
&state=<valeur_arbitraire>

Description des paramètres :

Paramètre Description
response_type=code Indique l'utilisation du flux Authorization Code.
client_id Identifiant de votre application partenaire, fourni par Inqom lors de l'onboarding.
redirect_uri URL de redirection autorisée (whitelistée) pour votre application. Par défaut : http://localhost:8080/. Des URL peuvent être ajoutées à la demande.
scope Scopes demandés (cf. article)
state Valeur arbitraire permettant de conserver le contexte de la requête et de se protéger contre les attaques CSRF.

 

Étape 2 : Récupération du code dans l'URL de retour

Une fois l'utilisateur authentifié (ou immédiatement si une session active est détectée), Inqom redirige le navigateur vers l'URL de redirection configurée, avec un code d'autorisation en paramètre :

<redirect_uri>?code=<authorization_code>&state=<state>

L'application doit extraire la valeur de code depuis la query string de cette URL de redirection.

Contrôles obligatoires côté partenaire avant de poursuivre :

  • Vérifier que le state reçu correspond exactement à celui stocké en session serveur. Sinon, rejeter la requête (HTTP 400, risque de CSRF).

  • Vérifier la présence du paramètre code

  • Vérifier qu'aucun paramètre error n'est présent (cf. gestion d'erreurs plus bas)

Le code est à usage unique et a une durée de vie courte (~60s) : l'échange contre un token doit être fait immédiatement. 

Étape 3 : Échange du code contre les jetons

Le partenaire envoie une requête HTTP POST côté serveur (jamais depuis le navigateur) à l'endpoint token d'Inqom pour échanger le code contre des jetons. 

Endpoints d'authentification :

Environnement Endpoint
Production https://auth.inqom.com/identity/connect/token
Staging https://auth-staging.inqom.com/identity/connect/token

Exemple de requête :

POST https://auth.inqom.com/identity/connect/token
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&code=<code>
&redirect_uri=<redirect_uri>
&client_id=<client_id>
&client_secret=<client_secret>

Description des paramètres :

Paramètre Description
grant_type=authorization_code Indique l'utilisation du flux Authorization Code.
code Code extrait de l'URL de redirection.
 redirect_uri URL de redirection autorisée (whitelistée) pour votre application. Par défaut : http://localhost:8080/. Des URL peuvent être ajoutées à la demande.
client_id Identifiant de votre application partenaire, fourni par Inqom.
client_secret Mot de passe de votre application partenaire, fourni par Inqom.

Exemples de réponses :

  • scope=openid apidata
    {
    "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIn...",
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1Ni...",
    "expires_in": 31104000,
    "token_type": "Bearer"
    }
  • scope=openid apidata offline_access

    {
    "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIn...",
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1Ni...",
    "expires_in": 31104000,
    "token_type": "Bearer",
    "refresh_token": "5fa4c22601386f6fe5f02a4..."
    }

    Vous retrouverez le détail de l'utilisation du refresh token dans cet article.

     

     

Remarque :

Le jeton d'accès obtenu porte les droits de l'utilisateur Inqom ayant donné son consentement. Toutes les requêtes effectuées avec ce jeton sont donc soumises aux mêmes autorisations que celles de cet utilisateur.

 

Gestion des erreurs :

Erreurs lors de la redirection (Étape 2) :

Si l’autorisation échoue côté Inqom, l’utilisateur est redirigé vers le redirect_uri avec un paramètre error au lieu du paramètre code.

https://partenaire-name.fr/callback?error=access_denied&error_description=...&state=<state>

 

Liste des erreurs possibles :

Erreur Cause probable Action recommandée
access_denied L’utilisateur a refusé le consentement Afficher une page explicative et proposer de relancer le processus
invalid_request Paramètre manquant ou mal formé Corriger l’implémentation côté partenaire et logger l’erreur
unauthorized_client client_id non autorisé pour ce flow Vérifier la configuration avec Inqom
invalid_scope Scope non autorisé Ajuster les scopes demandés à l’étape d’autorisation
server_error Erreur interne Inqom Réessayer plus tard ou contacter le support Inqom

 

Erreurs lors de l’échange du token (Étape 3) :

En cas d’échec lors de l’appel au endpoint /token, Inqom retourne une réponse JSON contenant un champ error et un code HTTP 400 ou 401.

{
"error": "invalid_grant",
"error_description": "The provided authorization grant is invalid, expired, revoked..."
}

 

Liste des erreurs possibles :

Erreur Cause probable Action recommandée
invalid_grant Code expiré, déjà utilisé, ou redirect_uri différent de celui utilisé à l’étape 1 Relancer le flux complet depuis l’étape 1
invalid_client client_id ou client_secret incorrect Vérifier les identifiants fournis par Inqom
unsupported_grant_type Valeur de grant_type incorrecte Utiliser authorization_code