Accedi con Didit
Il server ospitato (https://mcp.didit.me/mcp) è un server delle risorse OAuth 2.1. La Didit Business Console (business.didit.me) è il server di autorizzazione che ospita la schermata di consenso ed emette i token. Il tuo client MCP esegue automaticamente il flusso standard:
1
Scoperta
Il client invia una richiesta a Quel documento indica la risorsa (
/mcp senza token e riceve 401 con un’intestazione WWW-Authenticate: Bearer il cui resource_metadata punta ai metadati della risorsa protetta (RFC 9728):https://mcp.didit.me/mcp), il server di autorizzazione (https://business.didit.me) e gli scope supportati. Lo stesso documento è disponibile anche alla radice dell’origine, https://mcp.didit.me/.well-known/oauth-protected-resource, per i client che provano prima quel percorso.2
Registrazione (registrazione dinamica del client)
Il client legge i metadati del server di autorizzazione all’indirizzo
https://business.didit.me/.well-known/oauth-authorization-server e, se non ha ancora un client id, si registra presso il registration_endpoint (RFC 7591). Non devi predisporre nulla: i client locali con callback loopback o nativo (Claude Code, Cursor, MCP Inspector) e i client cloud con un callback verificato (Claude) si registrano in questo modo. Un URL di callback remoto che Didit non ha verificato viene rifiutato con invalid_redirect_uri; per quel client è necessario che un operatore lo registri prima.3
Autorizzazione (PKCE)
Il client apre
https://business.didit.me/authorize con una challenge PKCE S256. Accedi (o ti registri) e vedi esattamente quali autorizzazioni vengono richieste. I client sono pubblici: l’endpoint del token non accetta alcun segreto client (token_endpoint_auth_methods_supported è none), quindi è PKCE a legare il codice al client.4
Consenso
Approvi. La console crea una sessione per quell’app, vincolata agli scope che hai approvato, e restituisce un codice di autorizzazione, che il client scambia al
token_endpoint per un token di accesso e un token di aggiornamento.5
Chiamata degli strumenti
Il client invia l’access token con ogni richiesta. L’MCP valida il token tramite introspezione del token RFC 7662 presso il servizio di autenticazione di Didit (i token sono opachi, non JWT), legge le autorizzazioni della tua organizzazione dalla risposta dell’introspezione del token e agisce come te per la durata di quella richiesta.
Scope
I metadati della risorsa espongono tre scope. La schermata di consenso mostra in linguaggio semplice quelli richiesti da un client:
Entrambi gli scope includono
analytics. Gestire lists richiede didit:management; accedere a blocklist richiede didit:verification.
Il riferimento degli strumenti elenca lo scope di ciascuno strumento. Gli scope che approvi vengono riportati nel token e applicati lato server, quindi un’app collegata con il solo didit:verification viene rifiutata sulla superficie di gestione anche quando il tuo ruolo lo consentirebbe. Il server di autorizzazione conosce anche gli scope OpenID (openid profile email): una connessione che richiede solo questi può identificare chi sei e nient’altro.
Le autorizzazioni effettive di un’app sono l’intersezione tra gli scope approvati e il tuo ruolo nella console, mai la più ampia delle due.
Per creare una sessione di verifica con didit_session_create servono lo scope didit:verification e un ruolo con create:sessions o write:sessions. Il ruolo Developer include create:sessions. Approvare il solo didit:management non consente la creazione di sessioni, anche se il tuo ruolo ha l’autorizzazione richiesta.
Ruoli e autorizzazioni
Il token rilasciato dal server ospitato rappresenta te, quindi l’agente può lavorare su ogni organizzazione di cui fai parte con una singola connessione: gli strumenti inter-app (didit_session_search, didit_analytics, didit_context_get e gli altri strumenti *_search) aggregano automaticamente i dati di tutte.
Il tuo ruolo è sempre applicato dal backend di Didit, per ogni organizzazione. Ogni strumento corrisponde a una sola stringa di autorizzazione del backend (ad esempio write:sessions per didit_session_update_status, delete:sessions per didit_session_delete); il riferimento degli strumenti la mostra per ogni strumento. Il server verifica inoltre questa autorizzazione prima di inviare la richiesta, usando le autorizzazioni che la risposta dell’introspezione del token riporta per la tua organizzazione:
- In modalità
enforceuno strumento che il tuo ruolo non può eseguire viene escluso datools/list, e chiamarlo comunque restituisce un erroremissing_scopeche indica l’autorizzazione ("Your role in this organization does not include the permission 'delete:sessions' that didit_session_delete requires."). - In modalità
shadow(predefinita del server) ogni strumento viene elencato e la chiamata arriva al backend, che risponde con403se il ruolo non ha l’autorizzazione; l’esito viene solo registrato nel registro di audit del server.
READER può elencare e leggere; un OWNER o un ADMIN può scrivere ed eliminare.
Durata dei token
Un’app approvata ottiene una propria sessione, separata dalla sessione del browser da cui l’hai approvata. Gli access token hanno vita breve; il client li rinnova in modo trasparente con il refresh token (grant_types_supported include refresh_token), e il rinnovo mantiene gli scope dell’app e resta vincolato a quell’app. Se un rinnovo fallisce (ad esempio dopo che hai disconnesso l’app), il client esegue di nuovo Accedi con Didit alla chiamata successiva.
Il logout dalla console non disconnette le app collegate, e disconnettere un’app non ti disconnette mai da nessuna parte.
Disconnettere un’app
1
Dalla console
Impostazioni → Autenticazione → App collegate elenca ogni app che hai approvato, con il nome registrato e le autorizzazioni concesse. Disconnetti interrompe immediatamente l’accesso di quell’app: sia il suo access token sia il suo refresh token smettono di funzionare, e nient’altro viene modificato.
2
Dall'app (RFC 7009)
Un client può revocare il proprio accesso inviando il token al
revocation_endpoint del server di autorizzazione, indicato nei metadati su https://business.didit.me/.well-known/oauth-authorization-server. Come richiesto dall’RFC 7009, una chiamata riuscita restituisce 200 indipendentemente dal fatto che il token fosse ancora valido, quindi la risposta non ti dice mai se un token era valido. Un 503 significa che la revoca non è stata applicata: considera il token ancora valido e riprova.Perché nessuna chiave API? Ogni tool MCP chiama gli endpoint della console con ambito utente (
/organization/{org}/application/{app}/…), che autorizzano un token Bearer con privilegi per ruolo e rifiutano x-api-key. Una chiave API dell’applicazione serve per chiamare direttamente la REST API dal tuo backend (ad esempio per creare sessioni), non per questo MCP. didit_org_list_api_keys mostra i metadati delle chiavi con i valori oscurati; il tool che rivela una chiave in chiaro è nascosto sul connettore ospitato.Connettere ogni client
Ogni client segue lo stesso flusso; cambia solo il modo in cui gli fornisci l’URL.- Claude
- Claude Code
- Cursor
- Client generico
Usa il deep link che la Business Console mostra nella pagina di integrazione. Apre claude.ai con la finestra Add custom connector già compilata:Conferma, quindi completa Accedi con Didit. Claude Desktop usa lo stesso URL in Settings → Connectors → Add custom connector. Dettagli in Connect Claude.
Errori di autenticazione
401 da /mcp significa che il token manca, è scaduto o è stato revocato: il client dovrebbe aggiornarlo o rieseguire Accedi con Didit.
Un 403 o un errore missing_scope su un tool specifico significa di solito che il tuo ruolo non ha quell’autorizzazione (ad esempio un READER che tenta una scrittura) oppure che la connessione è stata approvata senza lo scope richiesto da quel tool, non che l’intera connessione sia guasta. Riconnettersi e approvare entrambi gli scope risolve il secondo caso; il primo richiede un cambio di ruolo.
Se ogni tool fallisce, controlla Impostazioni → Autenticazione → App collegate nella console: un’app disconnessa lì deve essere approvata di nuovo.
Riferimento dei tool
Cosa fa ogni tool, il suo scope e l’autorizzazione del ruolo.
Avanzate
Ruoli, comportamento tra app e self-hosting.