Geeignete Szenarien: Du entwickelst eine Drittanbieteranwendung / einen Agenten / einen MCP-Client / einen automatisierten Workflow und möchtest Benutzern ermöglichen, sich mit einem Klick über ihr Ace Data Cloud-Konto anzumelden und bei Bedarf auf ihre Ressourcen auf der Plattform zuzugreifen, ohne dass Benutzer API-Keys manuell kopieren und einfügen müssen.
Begriffe & Endpunkt-Schnellübersicht
Alle Endpunkte befinden sich unterhttps://auth.acedata.cloud; die neuesten Adressen können jederzeit über den Discovery-Endpunkt abgerufen werden:
Unterstützte Funktionen:
response_type=code, grant_types=authorization_code, refresh_token, code_challenge_methods=S256, plain, Client-Authentifizierungsmethoden client_secret_post (vertraulicher Client) / none (öffentlicher PKCE-Client).
Berechtigungsbereiche (Scope)
Beantrage Berechtigungen nach dem Prinzip der „minimalen Berechtigung“; Benutzer sehen auf der Autorisierungsseite jede von dir beantragte Berechtigung. Identitätsbezogen (OIDC-kompatibel)
Plattformressourcen
Zusammengefasste Bereiche (automatisch erweitert)
Speziell
Typische Kombinationen: Drittanbieter-„Ein-Klick-Anmeldung“ =openid profile; MCP- / IDE-Clients benötigen automatische Key-Konfiguration =openid profile credentials:read credentials:write; vollständige Verwaltungsoberfläche =openid profile email platform offline_access.
Schritt 1: Eine OAuth-Anwendung registrieren
Öffne auth.acedata.cloud/user/oauth-apps → „Anwendung erstellen“ und fülle Folgendes aus:- Anwendungsname / Beschreibung / Logo: Wird auf der Autorisierungseinwilligungsseite des Benutzers angezeigt.
- Client-Typ (Client Type):
- Vertraulich (confidential) — Du hast ein Backend und kannst
client_secretsicher verwahren (Webdienst, Backenddienst). - Öffentlich (public) — Reines Frontend / Desktop / CLI / Mobilgerät, kann kein Geheimnis verwahren und muss PKCE verwenden.
- Vertraulich (confidential) — Du hast ein Backend und kannst
- Callback-Adressen (Redirect URIs): Die Adresse, zu der der Benutzer nach Abschluss der Autorisierung zurückgeleitet wird; sie muss vollständig mit der
redirect_uriübereinstimmen, die du beim Starten der Autorisierung übergibst. Mehrere Adressen können eingetragen werden. - Berechtigungsbereiche (Scopes): Wähle die im vorherigen Abschnitt benötigten Scopes aus.
client_id; vertrauliche Clients zeigen außerdem einmalig das client_secret an — speichere es sofort, denn nach dem Schließen kann es nicht erneut angezeigt werden (es kann auf der Detailseite über „Schlüssel rotieren / Rotate Secret“ neu generiert werden; der alte Schlüssel wird sofort ungültig).
Jedes Konto kann maximal 20 OAuth-Anwendungen erstellen.
Schritt 2: Den Benutzer zur Autorisierungsseite weiterleiten
Leite im Browser deiner Anwendung den Benutzer zur Autorisierungsseite weiter und füge die Abfrageparameter hinzu:state: Eine von dir selbst generierte zufällige Zeichenfolge, die beim Callback unverändert zurückgegeben wird und zur Abwehr von CSRF dient; unbedingt prüfen.- PKCE (für öffentliche Clients verpflichtend, auch für vertrauliche Clients empfohlen): Generiere zuerst einen zufälligen
code_verifierund berechne danncode_challenge = BASE64URL( SHA256( code_verifier ) ). Fügecode_challengein die Autorisierungs-URL ein und bewahrecode_verifierselbst für Schritt 4 auf.
<redirect_uri>?error=access_denied&error_description=...&state=....
Der Autorisierungscode ist 10 Minuten gültig und kann nur einmal verwendet werden.
Schritt 3: Token mit dem Autorisierungscode abrufen
Rufe am Backend (vertraulicher Client) oder im Client (öffentlicher PKCE-Client) mitcode den Token-Endpunkt auf.
Vertraulicher Client (mit client_secret):
refresh_token erscheint nur, wenn offline_access beantragt wurde):
access_token ist ein JWT und enthält die scope-Deklaration; die Gültigkeitsdauer beträgt 15 Tage (expires_in in Sekunden). Das Refresh Token ist 30 Tage gültig.
Schritt 4: Schnittstellen mit dem Access Token aufrufen
Füge das Token einfach in denAuthorization: Bearer-Header ein.
Benutzerinformationen lesen (UserInfo, Felder werden nach autorisiertem Scope gefiltert):
platform.acedata.cloud, Autorisierung nach Scope). Zum Beispiel, wenn credentials:read erteilt wurde:
scope-Deklaration im JWT — das Token kann nur auf Ressourcen zugreifen, die der Benutzer autorisiert hat. Wenn auf nicht autorisierte Ressourcen zugegriffen wird, wird 403 zurückgegeben.
Token aktualisieren
Nachdem das Access Token abgelaufen ist, verwende das Refresh Token, um ein neues Token-Paar zu erhalten (vorausgesetzt,offline_access wurde ursprünglich beantragt):
Token widerrufen
Praxisbeispiel: So sind auch unsere eigenen MCP-Server angebunden
Die Verbindungen „Sign in with Ace Data Cloud“, die bei den über 15 MCP-Servern von Ace Data Cloud (NanoBanana, Midjourney, Suno, Seedance, Kling…) in Claude Desktop / Cursor erscheinen, verwenden genau diesen Ablauf: Sie sind alle als OAuth-Anwendungen des Typs öffentlich (PKCE) registriert, beantragencredentials-bezogene Scopes und können nach der Benutzerautorisierung im Namen des Benutzers api.acedata.cloud aufrufen — ohne dass der Benutzer einen API Key manuell einfügen muss. Deine Anbindung ist genau dieselbe wie ihre.
Häufige Fehler
Fehlerantworten haben einheitlich das Format{ "error": "<code>", "error_description": "<menschenlesbare Beschreibung>" }:
Einschränkungen im Überblick
Drittanbieter-OAuth-Anwendungen auf der Studio-Startseite einbetten
Unter „Einstellungen → Startseite → Website-Komponenten“ in Studio kann OAuth aktiviert und dieclient_id sowie die registrierte Callback-Adresse der Drittanbieteranwendung konfiguriert werden.
Die Website und der Callback müssen HTTPS verwenden, denselben Ursprung haben (Protokoll, Domain und Port) und einen anderen Ursprung als Studio verwenden.
In der Konfiguration darf kein client_secret eingetragen werden; Anwendungsschlüssel dürfen nur im Backend des Drittanbieters gespeichert werden.
Die von der Komponente beantragten Berechtigungen sind profile:read credentials:read. Jeder Besucher muss einzeln zustimmen; die Konfiguration der Komponente durch den Websitebetreiber stellt keine Autorisierung durch Besucher dar.
Die Drittanbieterseite generiert einen zufälligen state und PKCE-Verifier und sendet eine S256-Challenge an Studio. Studio hostet die offizielle Autorisierungsseite im Komponentenbereich,
nach der Zustimmung des Benutzers erhält der Drittanbieter einen einmaligen Autorisierungscode und ruft den Token-Endpunkt auf, um ein OAuth-Access-Token zu erhalten; anschließend wird
GET https://platform.acedata.cloud/api/v1/credentials/?user_id=<Benutzer-ID> aufgerufen, um vorhandene API Keys zu lesen.
Die Benutzer-ID stammt aus der im vorherigen Schritt von GET https://auth.acedata.cloud/api/v1/users/me zurückgegebenen id; die Schnittstelle für die Anmeldedatenliste akzeptiert kein user_id=me.
Studio übermittelt Drittanbietern weder sein eigenes Login-Token noch liest es den Key des Benutzers direkt aus und fügt ihn ein.
Öffentliche Clients müssen S256 PKCE verwenden. Beim Abrufen des Tokens muss eine redirect_uri übergeben werden, die exakt mit der Autorisierungsanfrage übereinstimmt.
Der Autorisierungscode kann nur einmal eingelöst werden. Vor der Autorisierung wird geprüft, ob die Callback-Adresse registriert ist.
Die Drittanbieterseite muss das Nachrichtenprotokoll implementieren; keine beliebige bestehende Webseite kann sich allein durch das Eintragen einer URL automatisch anbinden.
Ein vollständiges Beispiel findest du im Leitfaden zur Anbindung der Studio-OAuth-Komponente.
Die Autorisierung zum Lesen von API Keys entspricht der Erlaubnis für den Drittanbieter, diesen Key zu speichern und zu verwenden. Das Aufheben der OAuth-Autorisierung macht bereits vom Drittanbieter kopierte Keys nicht ungültig;
der Benutzer muss den Key zusätzlich widerrufen oder rotieren.
