Navigation du wiki
Modifier

Permissions

Les scopes qu'une application peut demander lors de la connexion OAuth à un PDS.

Lorsqu’une application se connecte au PDS d’un utilisateur via OAuth, elle demande un ensemble de permissions appelées scopes. Le PDS les présente à l’utilisateur au moment de l’authentification, et celui-ci choisit de les accorder ou non. Chaque scope décrit précisément ce que l’application pourra faire avec le compte.

Scope obligatoire

ScopeSignificationExemple
atprotoConfirme l’usage du profil atproto d’OAuth. Requis dans toute session ; sans lui, aucun accès aux ressources du PDS. Seul, il ne permet que l’authentification du compte (DID renvoyé dans sub)atproto

Scopes transitoires

Ces scopes reproduisent les permissions larges des « App Passwords » en attendant que les applications adoptent les scopes granulaires.

ScopeSignificationExemple
transition:genericPermissions larges équivalentes à une « App Password » : écriture de tout type d’enregistrement, upload de blobs, lecture/écriture des préférences, appels et proxying de la plupart des endpoints Lexicon, génération de service auth tokens. Exclut la gestion de compte (handle, email, suppression, migration) et les DMstransition:generic
transition:chat.bskyÉquivalent du toggle « DM Access » : endpoints et proxying chat.bsky, plus les service auth tokens associés. Ne fonctionne pas sans transition:generictransition:chat.bsky
transition:emailAccès à l’adresse email : elle est incluse, avec son statut de vérification, dans la réponse de com.atproto.server.getSessiontransition:email

Scopes granulaires

Chaque scope granulaire cible une ressource précise et accepte des paramètres qui en restreignent la portée. Le scope include permet de référencer un permission set, c’est-à-dire un groupe de scopes granulaires publié comme schéma Lexicon.

ScopeSignificationParamètresExemple
repoÉcriture des enregistrements du dépôt public, limitable par type d’enregistrement et par actioncollection (positionnel, requis, * autorisé), action (create/update/delete, toutes par défaut)repo:app.bsky.feed.post?action=create
rpcRequêtes API authentifiées vers des services distants (service auth tokens et proxying via le PDS). Au moins un des deux paramètres doit être restreintlxm (positionnel, requis, * autorisé), aud (DID + fragment de service), inheritAud (permission sets uniquement)rpc:app.bsky.feed.getFeed?aud=did:web:api.bsky.app%23bsky_appview
blobUpload de fichiers média vers le PDS. Interdit dans un permission setaccept (positionnel, requis : types MIME ou globs)blob:image/*
accountContrôle des détails d’hébergement du compte. Attributs : email (lecture ou modification) et repo (manage = import d’un CAR complet). Interdit dans un permission setattr (positionnel, requis, pas de wildcard), action (read par défaut, ou manage)account:email, account:repo?action=manage
identityContrôle du document DID et du handle. Attributs : handle ou * (contrôle total). Interdit dans un permission setattr (positionnel, requis)identity:handle, identity:*
includeRéférence un permission set : un groupe de permissions publié comme schéma Lexicon, résolu dynamiquement par le serveur d’autorisation et présenté à l’utilisateur avec titre et descriptionNSID du set (positionnel), aud (transmis aux permissions ayant inheritAud)include:app.bsky.authBasic?aud=did:web:api.bsky.app%23bsky_appview

Sources : https://atproto.com/specs/oauth (section « Authorization Scopes ») et https://atproto.com/specs/permission.