Scenari adatti: stai creando un’applicazione di terze parti / Agent / client MCP / flusso di lavoro automatizzato e vuoi consentire agli utenti di accedere con un clic tramite l’account Ace Data Cloud, accedendo alle loro risorse sulla piattaforma secondo necessità, senza dover copiare e incollare manualmente l’API Key.
Riferimento rapido a termini e endpoint
Tutti gli endpoint sono suhttps://auth.acedata.cloud; puoi ottenere in qualsiasi momento gli indirizzi più recenti tramite l’endpoint di discovery (Discovery):
Funzionalità supportate:
response_type=code, grant_types=authorization_code, refresh_token, code_challenge_methods=S256, plain, metodi di autenticazione client client_secret_post (client riservato) / none (client pubblico PKCE).
Ambiti di autorizzazione (Scope)
Richiedi secondo il principio del “minimo privilegio”; l’utente vedrà ogni autorizzazione richiesta nella pagina di autorizzazione. Categoria identità (compatibile OIDC)
Categoria risorse della piattaforma
Categorie aggregate (espansione automatica)
Speciale
Combinazioni tipiche: “accesso con un clic” di terze parti =openid profile; client MCP / IDE che necessitano di configurare automaticamente la Key =openid profile credentials:read credentials:write; console di gestione completa =openid profile email platform offline_access.
Passaggio 1: registra un’applicazione OAuth
Apri auth.acedata.cloud/user/oauth-apps → “Crea applicazione”, quindi compila:- Nome / descrizione / logo dell’applicazione: saranno visualizzati nella pagina di consenso all’autorizzazione dell’utente.
- Tipo di client (Client Type):
- Riservato (confidential) — hai un backend e puoi conservare in modo sicuro il
client_secret(servizi Web, servizi backend). - Pubblico (public) — frontend puro / desktop / CLI / mobile, non può conservare segreti, deve usare PKCE.
- Riservato (confidential) — hai un backend e puoi conservare in modo sicuro il
- URI di callback (Redirect URIs): l’indirizzo a cui l’utente viene reindirizzato al termine dell’autorizzazione; deve essere esattamente identico al
redirect_uripassato quando avvii l’autorizzazione, e puoi inserirne più di uno. - Ambiti di autorizzazione (Scopes): seleziona gli scope di cui hai bisogno nella sezione precedente.
client_id; per i client riservati verrà inoltre visualizzato una sola volta il client_secret — salvalo immediatamente, perché non potrà più essere visualizzato dopo la chiusura (puoi rigenerarlo da “Ruota segreto / Rotate Secret” nella pagina dei dettagli; il vecchio segreto diventa immediatamente non valido).
Ogni account può creare al massimo 20 applicazioni OAuth.
Passaggio 2: reindirizza l’utente alla pagina di autorizzazione
Nella tua applicazione, reindirizza il browser dell’utente alla pagina di autorizzazione, includendo i parametri di query:state: genera autonomamente una stringa casuale, che verrà restituita invariata nel callback e serve a prevenire il CSRF; assicurati di verificarla.- PKCE (obbligatorio per i client pubblici, consigliato anche per quelli riservati): genera prima un
code_verifiercasuale, quindi calcola
code_challenge = BASE64URL( SHA256( code_verifier ) ), inseriscicode_challengenell’URL di autorizzazione e conserva ilcode_verifierper usarlo nel passaggio 4.
<redirect_uri>?error=access_denied&error_description=...&state=....
Il codice di autorizzazione è valido per 10 minuti e può essere usato una sola volta.
Passaggio 3: scambia il codice di autorizzazione con un token
Nel tuo backend (client riservato) o nel client (client pubblico PKCE), chiama l’endpoint token usandocode.
Client riservato (con client_secret):
refresh_token appare solo se è stato richiesto offline_access):
access_token è un JWT, che contiene la dichiarazione scope; ha una validità di 15 giorni (numero di secondi in expires_in). Il Refresh Token ha una validità di 30 giorni.
Passaggio 4: chiamare le API con l’Access Token
È sufficiente inserire il token nell’headerAuthorization: Bearer.
Leggere le informazioni utente (UserInfo, campi filtrati in base agli scope autorizzati):
platform.acedata.cloud, autorizzate in base allo scope). Ad esempio, se è stato ottenuto credentials:read:
scope nel JWT: il token può accedere solo alle risorse autorizzate dall’utente. Se si accede a una risorsa non autorizzata, verrà restituito 403.
Aggiornare il token
Dopo la scadenza dell’Access Token, utilizzare il Refresh Token per ottenere una nuova coppia di token (è necessario aver richiesto inizialmenteoffline_access):
Revocare il token
Caso reale: è esattamente così che sono connessi i nostri server MCP
Le connessioni «Sign in with Ace Data Cloud» visualizzate in Claude Desktop / Cursor per gli oltre 15 server MCP di Ace Data Cloud (NanoBanana, Midjourney, Suno, Seedance, Kling…) utilizzano proprio questo flusso: sono tutti registrati come applicazioni OAuth di tipo pubblico (PKCE), richiedono scope relativi acredentials e, dopo l’autorizzazione dell’utente, i server MCP possono chiamare api.acedata.cloud per conto dell’utente, senza che quest’ultimo debba incollare manualmente una API Key. La tua integrazione è esattamente uguale alla loro.
Errori comuni
La risposta di errore è uniformemente{ "error": "<code>", "error_description": "<descrizione leggibile dall'uomo>" }:
Riepilogo rapido dei limiti
Incorporare applicazioni OAuth di terze parti nella home page di Studio
In Studio, «Impostazioni → Home page → Componenti del sito web» consente di abilitare OAuth e configurare ilclient_id dell’applicazione di terze parti e l’indirizzo di callback registrato.
Il sito web e il callback devono utilizzare HTTPS, avere la stessa origine (protocollo, dominio e porta) ed essere di origine diversa rispetto a Studio.
Nella configurazione non deve essere inserito client_secret; la chiave dell’applicazione può essere conservata solo nel backend di terze parti.
Le autorizzazioni richieste dal componente sono profile:read credentials:read. Ogni visitatore deve acconsentire separatamente; la configurazione del componente da parte del proprietario del sito non rappresenta l’autorizzazione dei visitatori.
La pagina di terze parti genera state casuale e un verifier PKCE e invia una challenge S256 a Studio. Studio ospita la pagina di autorizzazione ufficiale nell’area del componente;
dopo che l’utente ha acconsentito, la terza parte riceve un codice di autorizzazione monouso, chiama l’endpoint token per ottenere un OAuth access token, quindi accede a
GET https://platform.acedata.cloud/api/v1/credentials/?user_id=<用户ID> per leggere le API Key esistenti.
L’ID utente proviene dall’id restituito nel passaggio precedente da GET https://auth.acedata.cloud/api/v1/users/me; l’API dell’elenco delle credenziali non accetta user_id=me.
Studio non trasmette alla terza parte il proprio token di accesso né legge e inietta direttamente la Key dell’utente.
I client pubblici devono usare S256 PKCE. Durante lo scambio del token, deve essere trasmesso un redirect_uri esattamente identico a quello della richiesta di autorizzazione.
Il codice di autorizzazione può essere scambiato una sola volta. Prima dell’autorizzazione verrà verificato che l’indirizzo di callback sia stato registrato.
La pagina di terze parti deve implementare il protocollo di messaggistica; qualsiasi pagina web esistente non può essere integrata automaticamente semplicemente inserendo un URL.
Per un esempio completo, consultare la guida all’integrazione del componente OAuth di Studio.
Autorizzare la lettura della API Key equivale a consentire alla terza parte di salvare e utilizzare tale Key. La revoca dell’autorizzazione OAuth non invalida le Key già copiate dalla terza parte;
l’utente deve revocare o ruotare separatamente la Key.
