Note de référence
Identity Linking UCP : relier un compte avec OAuth
Fonctionnement d'Identity Linking dans UCP : niveaux d'accès, découverte OAuth, scopes, consentement et repli sans authentification.
Publiée le . Rattachée à le guide d'implémentation UCP.
Identity Linking permet à une plateforme UCP d’agir avec le compte marchand d’un utilisateur, après consentement explicite. La version actuelle s’appuie sur OAuth 2.0 hébergé par le marchand et distingue trois niveaux d’accès.
En bref
- Les accès sont publics, authentifiés comme agent, ou authentifiés comme utilisateur.
- OAuth gère l’identité ; UCP donne un sens commercial aux scopes.
- L’absence d’Identity Linking ne retire pas une capacité de la négociation.
Quels sont les trois niveaux d’accès ?
La spécification Identity Linking distingue :
| Niveau | Authentification | Exemple |
|---|---|---|
| public | aucune | parcourir un catalogue public |
| agent-authenticated | identifiants de plateforme | créer un panier invité |
| user-authenticated | plateforme et jeton utilisateur | adresses ou commandes personnelles |
Identity Linking fait le pont entre les deux derniers niveaux. La plateforme obtient un jeton après le consentement du client, puis le présente aux opérations protégées.
Comment UCP et OAuth se partagent-ils le travail ?
UCP définit les scopes commerciaux et les opérations qu’ils protègent. OAuth définit les points de terminaison, les flux, les jetons et le vocabulaire accepté par le serveur d’autorisation. Les deux couches se complètent mais ne se confondent pas.
Le marchand publie ses métadonnées OAuth selon RFC 8414. Une ressource protégée peut
répondre 401 avec WWW-Authenticate et un lien resource_metadata vers
/.well-known/oauth-protected-resource. La plateforme construit ensuite sa propre
requête d’autorisation, avec son state, son redirect_uri et ses valeurs PKCE.
Un continue_url ne doit pas transporter une requête OAuth préfabriquée. Il sert aux
étapes hébergées hors OAuth, comme la création d’un compte ou l’acceptation de conditions.
Comment déclarer les scopes ?
config.scopes dans le profil UCP déclare les barrières obligatoires. Le document OAuth
scopes_supported liste tout le vocabulaire accepté. Les scopes acceptés mais absents de
config.scopes peuvent débloquer des fonctions optionnelles sans rendre
l’authentification obligatoire.
Les messages d’exécution peuvent signaler identity_optional lorsqu’une connexion
améliorerait la réponse. L’agent peut alors proposer le lien de compte sans bloquer un
parcours invité valide.
La négociation de capacités reste indépendante
Une capacité n’est jamais retirée de l’intersection parce qu’Identity Linking manque. Si Order est annoncé des deux côtés, il reste négocié. Les scopes déclarent ensuite quelles opérations exigent un jeton utilisateur.
Cette séparation est essentielle pour la compatibilité. Une plateforme peut utiliser le catalogue public ou un checkout invité, même si elle ne sait pas encore lier un compte. Le marchand ne doit pas transformer une absence d’identité en incompatibilité générale du protocole.
Traitement d’une identité requise
- La plateforme appelle l’opération sans jeton.
- Le marchand répond
401et fournit les métadonnées de ressource. - La plateforme découvre le serveur d’autorisation.
- Le client donne son consentement dans l’interface du marchand.
- La plateforme échange le code avec PKCE.
- Elle rejoue l’opération avec le jeton et les scopes accordés.
Un jeton insuffisant doit produire une erreur distincte d’une absence de jeton. Les logs doivent conserver le scope demandé et le scope obtenu, sans enregistrer le secret.
Checklist de sécurité
- héberger OAuth sous le domaine du marchand ;
- publier les métadonnées RFC 8414 et RFC 9728 ;
- utiliser PKCE et vérifier
state; - demander le minimum de scopes ;
- ne jamais placer un jeton dans
continue_url; - prévoir un parcours invité lorsque la capacité le permet ;
- révoquer et renouveler les jetons selon la politique OAuth du marchand.
Le point de découverte UCP lui-même est détaillé dans
le manifeste /.well-known/ucp.
L’intégration complète est cadrée dans le guide marchand.
Sources
- UCP, Identity Linking Capability
- RFC 8414, OAuth 2.0 Authorization Server Metadata
- RFC 9728, OAuth 2.0 Protected Resource Metadata
Revenir à le guide d'implémentation UCP · Toutes les notes · Read in English