Configuration
Type d'application, URI de redirection et permissions à déclarer côté Oreus.
Toute intégration commence par une application déclarée dans la console Oreus. Le type choisi détermine le flow disponible — il ne se change pas après coup.
Choisir le type
| Votre application | Type à créer |
|---|---|
| SPA (React, Vue…) | Third-party app · Single page app |
| Mobile natif (iOS, Android) | Third-party app · Native app |
| Backend qui connecte des utilisateurs | Third-party app · Traditional web |
| Service sans utilisateur | Machine-to-Machine |
| API qui reçoit des jetons | Ce n'est pas une application — voir Ressource API |
Les trois premiers sont des clients publics ou confidentiels qui déclenchent une connexion. Une API qui se contente de valider des jetons n'en est pas une : elle se déclare comme ressource.
URI de redirection
Elles doivent correspondre au caractère près à ce que le client envoie. Un
slash final, un port différent, http au lieu de https : tout écart produit
invalid_redirect_uri avant même l'écran de connexion.
| Plateforme | Format attendu |
|---|---|
| Web | https://votre-app.exemple/callback |
| Mobile natif | votre-scheme://callback |
| Backend | https://votre-backend.exemple/oidc/callback |
Sur mobile, le schéma personnalisé impose le type Native : les types SPA et
Traditional web n'acceptent que http/https.
Permissions
C'est ici que se joue le plus grand nombre d'échecs silencieux.
Pour une application third-party, les scopes ne sont accordés que s'ils sont déclarés dans l'onglet Permissions. Et selon la catégorie, l'omission ne se manifeste pas de la même façon :
| Catégorie | Scope non déclaré |
|---|---|
| Profil utilisateur | erreur visible à l'autorisation |
| Ressource API | ignoré en silence |
| Organisation | ignoré en silence |
Un scope ignoré donne une connexion réussie, des claims plausibles, et une
fonctionnalité qui ne marche pas sans que rien ne l'explique. Le réflexe :
comparer les scopes accordés (claim scope de l'access token) à ceux
demandés.
openid et offline_access font exception — ils sont configurés
automatiquement et n'apparaissent pas dans cet onglet.
Ressource API
Une API se déclare dans API resources, avec un identifiant qui sert d'audience :
http://localhost:3000/api/v1Cet identifiant n'a pas besoin d'être joignable : c'est une chaîne, pas une
adresse à appeler. Il doit en revanche être exactement celui que les clients
envoient dans resource, sinon l'autorisation échoue en invalid_target.
Organisations
Pour qu'un utilisateur puisse obtenir un jeton d'organisation, il doit :
- être membre d'au moins une organisation ;
- y porter un rôle couvrant les permissions demandées ;
- et l'application doit avoir
urn:logto:scope:organizationsdéclaré.
Si aucune organisation n'est proposée à la connexion, c'est l'un de ces trois points qui manque.