Skip to main content
Unterstütze in deinem eigenen Produkt „Mit Ace Data Cloud anmelden“ und lies und schreibe nach der Autorisierung durch den Benutzer im Namen des Benutzers dessen Ace Data Cloud-Ressourcen (Profil, API-Token, Abonnements, Nutzung, Bestellungen usw.). Die Grundlage ist der Standard-OAuth-2.0-Autorisierungscode-Flow (Authorization Code) + PKCE, und die Integration ist vollständig identisch mit der von GitHub / Google Login — jede bereits vorhandene OAuth-Client-Bibliothek kann direkt verwendet werden.
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 unter https://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:
  1. Anwendungsname / Beschreibung / Logo: Wird auf der Autorisierungseinwilligungsseite des Benutzers angezeigt.
  2. Client-Typ (Client Type):
    • Vertraulich (confidential) — Du hast ein Backend und kannst client_secret sicher verwahren (Webdienst, Backenddienst).
    • Öffentlich (public) — Reines Frontend / Desktop / CLI / Mobilgerät, kann kein Geheimnis verwahren und muss PKCE verwenden.
  3. 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.
  4. Berechtigungsbereiche (Scopes): Wähle die im vorherigen Abschnitt benötigten Scopes aus.
Nach dem Speichern erhältst du die 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_verifier und berechne dann code_challenge = BASE64URL( SHA256( code_verifier ) ). Füge code_challenge in die Autorisierungs-URL ein und bewahre code_verifier selbst für Schritt 4 auf.
Nachdem der Benutzer sich angemeldet und auf „Zustimmen“ geklickt hat, wird der Browser zurückgeleitet zu:
Wenn der Benutzer ablehnt: <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) mit code den Token-Endpunkt auf. Vertraulicher Client (mit client_secret):
Öffentlicher Client (PKCE, ohne client_secret):
Erfolgreiche Rückgabe (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 den Authorization: Bearer-Header ein. Benutzerinformationen lesen (UserInfo, Felder werden nach autorisiertem Scope gefiltert):
Plattformressourcen-Schnittstelle aufrufen (platform.acedata.cloud, Autorisierung nach Scope). Zum Beispiel, wenn credentials:read erteilt wurde:
Das Plattform-Backend prüft die 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):
Die Rückgabestruktur entspricht Schritt 3; der Scope wird aus der ursprünglichen Autorisierung unverändert beibehalten. Nach dem Aktualisieren wird das alte Refresh Token ungültig (Rotation), bitte speichere das neue.

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, beantragen credentials-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 die client_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.