Authentifizierung
Auth Keys
Bei multipart-Anfragen zum Erstellen einer Assembly, die mit einem Auth Key authentifiziert werden, fügen Sie ein auth-Objekt
in das JSON-codierte Formularfeld params ein. Der kleinstmögliche solche params-Wert ist unten dargestellt.
{
"auth": {
"key": "23c96d084c744219a2ce156772ec3211"
}
}
Das Feld key verweist auf den Auth Key, der Ihrem Transloadit Workspace zugeordnet ist und
auf der Seite Zugangsdaten zu finden ist. Das Obige ist das minimale Authentifizierungsobjekt für
eine Assembly-Anfrage, die einen Auth Key verwendet. Andere Endpunkte und Authentifizierungsmethoden können
andere Anfrageformate verwenden, wie in der jeweiligen Endpunktdokumentation und weiter unten beschrieben.
Assemblies, die /transloadit/import direkt oder über ein Template verwenden, erfordern
entweder ein Bearer-Token oder signierte params mit einem in der Zukunft liegenden Zeitstempel in params.auth.expires.
Dies gilt auch dann, wenn Signature Authentication für den Workspace deaktiviert ist. Ein Auth Key allein
reicht nicht aus; mit einem Bearer-Token authentifizierte Anfragen benötigen keine separate Signatur und kein separates Ablaufdatum.
Die öffentlichen Storage Builtin Templates bilden die Ausnahme: Öffentliche Storage Builtin Templates können unsignierte Anfragen nur dann bedienen,
wenn jeder Storage-Import innerhalb eines deklarierten öffentlichen Präfixes bleibt. Dies erlaubt weder
unsignierte Assemblies mit beliebigen Steps noch den Zugriff auf private Storage-Pfade.
Signature Authentication
Wir empfehlen, Signature Authentication für Ihr Konto zu aktivieren, insbesondere wenn Sie Transloadit aus einer nicht vertrauenswürdigen Umgebung heraus integrieren (etwa aus dem Browser mit Uppy). Sie können Signature Authentication in Ihren Workspace-Einstellungen aktivieren.
Wir empfehlen dringend, Signature Authentication zu aktivieren, wenn Sie mit unserer API arbeiten, insbesondere in nicht vertrauenswürdigen Umgebungen, in denen Nutzer möglicherweise auf Ihren Auth Key zugreifen können.
Bei aktivierter Signature Authentication wird das Auth Secret Ihres Workspaces (zu finden
neben Ihrem Auth Key auf der Seite Zugangsdaten)
als Schlüssel für einen HMAC verwendet, der aus genau dem serialisierten params-Wert erzeugt wird. Dieser Wert enthält sowohl einen key (Ihren
wie zuvor erwähnten Auth Key) als auch einen expires-Parameter, einen Zeitstempel in naher
Zukunft, der als Ablaufdatum für die Anfrage dient.
Für das Erstellen von Assemblies mit Transloadit könnte Ihr Back-End eine Signatur berechnen, die nur bestimmte Parameter, authentifizierte Nutzer und einen Zeitraum abdeckt, den es als legitime Nutzung ansieht. Beispielsweise würde es sich weigern, eine Signatur für Nutzer zu erzeugen, die nicht angemeldet sind. Sie können hier serverseitig beliebige Geschäftslogik einsetzen, um zu entscheiden, ob Sie eine Signatur ausgeben oder nicht. Transloadit kann für die Nutzdaten eine korrekte Signatur verlangen, wenn sich eine API-Anfrage mit Ihrem Auth Key authentifiziert.
So verlangen Sie Signature Authentication für API-Anfragen, die mit Ihrem Auth Key authentifiziert werden:
- Öffnen Sie die Workspace-Einstellungen in Ihrem Konto.
- Aktivieren Sie im Abschnitt API-Einstellungen die Option Korrekte Signature verlangen.
- Warten Sie, bis die automatische Speicherung abgeschlossen ist.
Gültige Bearer-Tokens umgehen Signaturanforderungen, einschließlich der Einstellungen auf Workspace- und Template-Ebene; die Scopes und Audience-Einschränkungen der Tokens gelten weiterhin. Diese Einstellungen fügen keine Authentifizierung für Capability-basierten Zugriff hinzu, etwa für URLs zum Assembly-Status, zum Abbrechen oder für fortsetzbare Uploads. Halten Sie Assembly IDs und Capability-URLs geheim, und befolgen Sie die Authentifizierungshinweise des jeweiligen Endpunkts.
Die meisten Back-End-SDKs verwenden Signature Authentication automatisch, wenn Sie Ihr Auth Secret angeben. Vielleicht ist diese Einführung also schon alles, was Sie wissen müssen. Wenn Sie Transloadit jedoch in nicht vertrauenswürdige Umgebungen wie Browser (Uppy!) integrieren, sollten Sie weiterlesen, um zu erfahren, wie Ihr Back-End diesen Umgebungen Signaturen bereitstellen kann.
So erzeugen Sie Signaturen
Wie sieht das Ganze nun aus?
Das typische params-Feld beim Erstellen einer Assembly ohne Signature Authentication
sieht wie folgt aus:
{
"auth": {
"key": "23c96d084c744219a2ce156772ec3211"
},
"steps": {
// …
}
}
Der auth.key in diesem Beispiel ist der Auth Key aus
API-Zugangsdaten in Ihrem Konto.
Um diese Anfrage zu signieren, muss zusätzlich das Feld auth.expires hinzugefügt werden. Dadurch wird es Teil unserer
Nutzdaten, die durch unsere Signatur geschützt sind. Würde jemand es ändern, würde Transloadit die
Anfrage ablehnen, da die Signatur nicht mehr übereinstimmt. Sie haben dann andere Nutzdaten signiert als die, die wir
erhalten haben. Stimmt die Signatur überein, vergleichen wir selbstverständlich das Datum und lehnen wie
angewiesen ab. Auf diese Weise lassen sich Anfragen von Dritten, die in den Besitz dieser Nutzdaten gelangt sind,
nur sehr schwer unbegrenzt wiederholen. Denn auch wenn unser mit A+ bewertetes HTTPS dies bereits weitgehend
verhindern sollte, könnte der Browser-Cache leichter auszuspähen sein.
Die Eigenschaft expires muss einen Zeitstempel in der (nahen) Zukunft enthalten. Verwenden Sie für das Datum das Format ISO 8601
(YYYY-MM-DDTHH:mm:ss.sssZ) und achten Sie darauf, dass UTC als Zeitzone verwendet wird. Zum
Beispiel:
{
"auth": {
"key": "23c96d084c744219a2ce156772ec3211",
"expires": "YOUR_FUTURE_ISO_8601_TIMESTAMP"
},
"steps": {
// …
}
}
So berechnen Sie die Signatur für diese Anfrage:
- Wandeln Sie in Ihrem Front-End das obige JavaScript-Objekt in einen JSON-String um und senden Sie ihn an Ihr Back-End.
- Berechnen Sie in Ihrem Back-End eine RFC 6234-konforme HMAC-Hex-Signatur
über den String, mit Ihrem Auth Secret als Schlüssel und dem Algorithmus,
der im
signature_algoIhres Auth Keys konfiguriert ist. Neue Auth Keys verwenden standardmäßigsha384. Ältere Auth Keys ohne konfigurierten Algorithmus akzeptierensha384,sha256odersha1. Stellen Sie demsignature-String den Namen des Algorithmus in Kleinbuchstaben voran. Beim Standardalgorithmus lautet er zum Beispielsha384:<HMAC-signature>. Sie können diesen String an Ihr Front-End senden (sofern Sie die entsprechenden Prüfungen vorgenommen haben, um sicherzustellen, dass es sich um eine echte Anfrage Ihres Front-Ends handelt). - Fügen Sie in Ihrem Front-End Ihrer Anfrage ein multipart-POST-Feld
signaturemit diesem Wert hinzu (z. B. mit einem versteckten Feld in einem HTML-Formular).
Wenn Ihre Implementierung template_id statt steps verwendet, müssen Sie keine
Signatur für die Instructions erzeugen, die Ihr Template enthält. Wir
sollten nur Kommunikations-Nutzdaten signieren.
Wir empfehlen dringend, für jede Anfrage einen zufällig erzeugten params.nonce-Wert
auf der obersten Ebene von params anzugeben. Dadurch unterscheiden sich unabhängig voneinander erzeugte Signaturen, und eine versehentliche
Wiederverwendung von Signaturen wird vermieden. Eine nonce macht Wiederholungsversuche nicht idempotent: Ein erneuter Versuch einer Anfrage zum Erstellen einer Assembly
kann eine weitere Assembly erstellen. Kümmern Sie sich bei Bedarf in Ihrer Anwendung um die Deduplizierung von Wiederholungsversuchen.
Verwenden Sie signierte params nicht endpunktübergreifend wieder. Template-Lesezugriffe, das Auflisten von Auth Keys, das Auflisten von Template-Zugangsdaten
und Abrechnungs-Lesezugriffe lehnen Signaturen, die bereits für einen anderen Endpunkt erfasst oder
zum Erstellen einer Assembly verwendet wurden, mit SIGNATURE_REUSE_DETECTED ab. Erzeugen Sie für jede Anfrage neue signierte params.
Die vollständige Anfrage sollte ungefähr wie folgt aussehen:
{
"params": {
"auth": {
"key": "23c96d084c744219a2ce156772ec3211",
"expires": "YOUR_FUTURE_ISO_8601_TIMESTAMP",
},
"nonce": "04ac6cb6-df43-41fb-a7fd-e5dd711a64e1",
"steps": {
// …
},
},
"signature": "sha384:YOUR_SIGNATURE",
}
Sobald Transloadit die Anfrage erhalten hat, erzeugen auch wir nach demselben Verfahren eine Signatur
und vergleichen die beiden Signaturen. Unterscheiden sich die Signaturen, antworten unsere Server
mit INVALID_SIGNATURE.
Zusammengefasst läuft der Prozess wie folgt ab:
- Erzeugen Sie JSON-Nutzdaten, die als Feld
paramsan Transloadit gesendet werden. - Berechnen Sie anhand des Inhalts der Nutzdaten eine Signatur, mit Ihrem Auth Secret als Schlüssel.
- Senden Sie die Anfrage an Transloadit, wobei die Signatur im Feld
signatureübergeben wird - Transloadit berechnet dieselbe Signatur mit dem Auth Secret Ihres Kontos und dem Inhalt der Nutzdaten.
- Stimmen die Signaturen überein, wird die Anfrage zugelassen und eine entsprechende Antwort gesendet.
Andernfalls wird die Anfrage abgelehnt, und es wird ein Fehler mit dem Code
INVALID_SIGNATUREzurückgegeben.
So kann Transloadit den Aufrufer authentifizieren und die Integrität von params prüfen, da Dritte
ohne Zugriff auf Ihr Auth Secret keine passende Signatur berechnen könnten. TLS authentifiziert Transloadit gegenüber Ihrem Client
und schützt die Verbindung. Das Signieren von Webhooks ist ein separater Ablauf für Anfragen, die Transloadit an
Ihre Server sendet.
Nachfolgend finden Sie einige Beispiele dafür, wie Sie eine POST-Anfrage zum Erstellen einer Assembly ausführen. Wir empfehlen dringend, eines unserer SDKs zu verwenden, die die Signaturerzeugung automatisch übernehmen und gut getestet sind.
Webhooks werden anders signiert als API-Anfragen.
Transloadit signiert genau den JSON-String im Formularfeld transloadit mit
HMAC-SHA1 und dem jeweils zutreffenden Auth Secret. Das Feld signature enthält
den hexadezimalen Digest ohne Algorithmus-Präfix. Befolgen Sie die
Anleitung zur Webhook-Verifizierung, einschließlich der Auswahl des Auth Secrets,
statt die unten stehenden Beispiele zum Signieren von API-Anfragen zu verwenden.
Beispielcode für verschiedene Sprachen
Die folgenden Beispiele zeigen das Erstellen von Assemblies mit unseren offiziellen SDKs. Die SDKs übernehmen die gesamte Signaturerzeugung intern, was die Integration einfacher und sicherer macht.
// yarn add @transloadit/node
// or
// npm install --save @transloadit/node
import { Transloadit } from '@transloadit/node'
const transloadit = new Transloadit({
authKey: 'YOUR_TRANSLOADIT_KEY',
authSecret: 'YOUR_TRANSLOADIT_SECRET',
})
const response = await transloadit.createAssembly({
params: {
template_id: 'YOUR_TRANSLOADIT_TEMPLATE_ID',
// your other params like notify_url, fields, etc.
},
waitForCompletion: true,
})
console.log(response)
Wenn Sie eine Signatur separat berechnen müssen (z. B. für die Verwendung im Front-End), können Sie
calcSignature verwenden:
const { signature, params } = transloadit.calcSignature({
template_id: 'YOUR_TRANSLOADIT_TEMPLATE_ID',
})
console.log(signature, params)
Wenn Sie die Details der Signaturimplementierung im Rohformat sehen möchten (z. B. um das Signieren in einer
Sprache zu implementieren, für die wir kein SDK anbieten), sehen Sie sich die oben verlinkten Quellcodes an. Die Signatur ist ein
RFC 6234-konformer HMAC-Hex-Digest, der über den
JSON-codierten params-String berechnet wird, mit Ihrem Auth Secret als
Schlüssel und dem im signature_algo Ihres Auth Keys konfigurierten Algorithmus. Neue Auth Keys verwenden standardmäßig
sha384. Stellen Sie der Signatur den Namen ihres Algorithmus in Kleinbuchstaben voran
(z. B. sha384:...).
curl --fail-with-body -sS --location 'https://api2.transloadit.com/assemblies' \
--form 'params={"auth":{"key":"23c96d084c744219a2ce156772ec3211","expires":"YOUR_FUTURE_ISO_8601_TIMESTAMP"},"template_id":"9cf67cbba601e37ee10c442b037e0"}' \
--form 'signature=sha384:YOUR_SIGNATURE' \
--form 'files=@/path/to/your/file.jpg'
Signierte Smart CDN URLs
Zum Signieren einer Smart CDN URL wird ein ähnliches Verfahren wie bei regulären API-Signaturen verwendet. Ein HMAC-Digest wird über einen String berechnet, der aus der Smart CDN URL abgeleitet wird, mit dem Auth Secret als Schlüssel. Damit die Signatur gültig ist, muss der verwendete Auth Key für die Nutzung mit Smart CDN aktiviert sein.
Um eine signierte Smart CDN URL zu erzeugen, verwenden Sie den Auth Key, der auf Ihrer Seite
Zugangsdaten für die Nutzung mit Smart CDN vorgesehen ist. Smart CDN URLs erfordern sha256. Signaturen regulärer API-Anfragen
verwenden den im signature_algo des Auth Keys konfigurierten Algorithmus; neue Auth Keys verwenden standardmäßig
sha384.
Legacy-Signaturen für Smart CDN auf Basis von s= und expires= sind veraltet. Neue Integrationen sollten
immer sig= mit exp= verwenden.
Die Erzeugung einer Smart CDN Signatur muss im Back-End erfolgen. Das Verfahren verwendet das Auth Secret, das vertraulich ist und Ihren Nutzern im Front-End nicht offengelegt werden darf.
Eine typische Smart CDN URL hat folgende Struktur:
https://[your-workspace].tlcdn.com/[template-name]/[file-path]?[parameters]
[your-workspace]ist der Name Ihres Transloadit Workspaces[template-name]ist der Name Ihres Templates[file-path]ist der Pfad zu der Datei, die Sie transformieren möchten[parameters]sind die gewünschten Transformationsparameter (z. B.h=100)
Eine signierte Smart CDN URL wird in folgenden Schritten erzeugt:
- Fügen Sie den Query-Parameter
exphinzu, um einen Zeitpunkt in der Zukunft festzulegen, nach dem die Signatur vom Smart CDN nicht mehr akzeptiert wird. Dies ist nützlich, um den Zugriff auf eine Datei zeitlich zu begrenzen. Der Ablaufzeitpunkt wird als Anzahl der Millisekunden seit der UNIX-Epoche (Mitternacht zu Beginn des 1. Januar 1970, UTC) angegeben. Dieser Parameter ist zwar optional, wir empfehlen jedoch dringend, immer eine Ablaufzeit festzulegen. Eine Signatur mitexp=1722517200000ist zum Beispiel bis Thu, 01 Aug 2024 13:00:00 GMT gültig. - Fügen Sie den Query-Parameter
auth_keyhinzu, um den Auth Key festzulegen, der zu dem Auth Secret gehört, mit dem die Signatur erstellt wird. Ist dieser Parameter nicht gesetzt, geht die API von Transloadit davon aus, dass das älteste für Smart CDN aktivierte Auth Key-Paar für die Signatur verwendet wurde. Durch Setzen des Parametersauth_keykönnen Sie Ihren Auth Key rotieren, ohne Ihre Nutzer zu unterbrechen, daher empfehlen wir dringend, ihn zu setzen. Zum Beispiel:auth_key=23c96d084c744219a2ce156772ec3211 - Sortieren Sie die Query-Parameter nach Schlüssel in aufsteigender Reihenfolge anhand von UTF-16-Codeeinheiten, entsprechend
URLSearchParams.sort(). Die Sortierung sollte stabil sein, d. h. wenn ein Schlüssel mehrfach im Query-String vorkommt, sollten die zugehörigen Werte ihre relative Reihenfolge beibehalten. Zum Beispiel wirdh=100&f=png&f=jpg&auth_key=hello&exp=123sortiert zuauth_key=hello&exp=123&f=png&f=jpg&h=100. - Bilden Sie den zu signierenden String, indem Sie die Werte verketten:
Die Werte für
[your-workspace]/[template-name]/[file-path]?[sorted-parameters][your-workspace],[template-name]und[file-path]müssen URL-codiert sein, damit sie nur URL-sichere Zeichen enthalten. Beachten Sie, dass der String nicht mit einem führenden Schrägstrich beginnt. Das Zeichen?muss weggelassen werden, wenn[sorted-parameters]leer ist. - Berechnen Sie eine RFC 6234-konforme HMAC-Hex-Signatur über den
zu signierenden String, mit Ihrem Auth Secret als Schlüssel und SHA256 als Hash-Algorithmus.
Stellen Sie der Hex-Signatur den Namen des Algorithmus in Kleinbuchstaben und einen Doppelpunkt voran, also
sha256:. Für SHA256 verwenden Sie zum Beispielsha256:[hmac-signature]. - Hängen Sie die mit Präfix versehene Hex-Signatur im Query-Parameter
sigan die URL an. So erhalten Sie die signierte Smart CDN URL:Die Werte fürhttps://[your-workspace].tlcdn.com/[template-name]/[file-path]?[parameters]&sig=sha256:[hmac-signature][your-workspace],[template-name]und[file-path]müssen URL-codiert sein, damit sie nur URL-sichere Zeichen enthalten. Diese signierte URL kann dann an Ihr Front-End gesendet oder dort verwendet werden, bis das Ablaufdatum erreicht ist.
Sicherheit und Cache-Lebensdauer
Signierte Smart CDN URLs sind nicht nur ein Mechanismus zur Zugriffskontrolle. Ihr Ablauf bestimmt auch, wie lange ein frisch erzeugtes Ergebnis zwischengespeichert werden darf.
- Kürzere
exp-Werte verkleinern das Replay-Zeitfenster und verschärfen die Zugriffskontrolle. - Längere
exp-Werte erhöhen die Wiederverwendung des Caches, verringern die Arbeit am Ursprungsserver und senken im Allgemeinen Latenz und Encoding-Volumen. - In der Praxis ist die effektive Cache-Lebensdauer einer signierten Smart CDN Antwort durch die verbleibende Lebensdauer der Signatur begrenzt.
Der Zielkonflikt ist also einfach:
- Höhere Sicherheitsempfindlichkeit: Verwenden Sie ein kürzeres
exp, was auch eine kürzere effektive Cache-TTL bedeutet. - Mehr Wiederverwendung des Caches und geringere Kosten: Verwenden Sie ein längeres
exp, was auch bedeutet, dass die URL länger verwendbar bleibt.
Wählen Sie das Ablaufzeitfenster entsprechend der Sensibilität der Inhalte und dem gewünschten Maß an Wiederverwendung des Caches. Für viele Anwendungsfälle mit Bildern und Vorschauen bietet ein moderates Ablaufzeitfenster ein gutes Gleichgewicht. Für hochsensible Inhalte verwenden Sie ein deutlich kürzeres.
Beispielcode
Nachfolgend finden Sie Beispiele in verschiedenen Sprachen zum Erzeugen signierter Smart CDN URLs mit unseren SDKs.
// yarn add @transloadit/node
// or
// npm install --save @transloadit/node
import { Transloadit } from '@transloadit/node'
const transloadit = new Transloadit({
authKey: 'YOUR_TRANSLOADIT_KEY',
authSecret: 'YOUR_TRANSLOADIT_SECRET',
})
const url = transloadit.getSignedSmartCDNUrl({
workspace: 'YOUR_WORKSPACE',
template: 'YOUR_TEMPLATE',
input: 'image.png',
urlParams: { height: 100, width: 100 },
})
console.log(url)
Lesezugriff nach der Kündigung
Gekündigte Workspaces können keine neuen Bearer-Tokens erstellen. Endpunkte, die den Zugriff nach der Kündigung ausdrücklich erlauben, verlinken auf diese Anleitung. Verwenden Sie einen vorhandenen aktiven Auth Key und das zugehörige Auth Secret; der Schlüssel muss weiterhin die für den Endpunkt aufgeführten Scopes gewähren. Dadurch wird weder der Schreibzugriff wiederhergestellt, noch werden andere Endpunkte nach der Kündigung verfügbar.
Installieren Sie in einem vertrauenswürdigen serverseitigen Node.js-Projekt das SDK mit yarn add @transloadit/node.
Setzen Sie TRANSLOADIT_KEY und TRANSLOADIT_SECRET und anschließend TRANSLOADIT_URL auf die vollständige HTTPS-URL,
die auf der Seite des Endpunkts angezeigt wird, wobei Sie alle Pfadparameter durch die Werte Ihrer Ressourcen ersetzen.
Halten Sie beide Zugangsdaten, die signierte URL und die Antwort geheim. Führen Sie dieses Setup niemals in Browser-Code aus.
Das SDK signiert params mit sha384, dem Standard für neue Auth Keys, und setzt das Ablaufdatum.
Das Beispiel fügt eine neue Nonce hinzu, um die Wiederverwendung von Signaturen zu vermeiden. Wenn Ihr Schlüssel einen anderen
Signaturalgorithmus verwendet, übergeben Sie ihn als zweites Argument an calcSignature. Legen Sie etwaige Endpunktfilter
in dem Objekt ab, das als erstes Argument übergeben wird, neben der Nonce.
Das SDK ruft für diese Anleitung /token nicht auf.
Speichern Sie dies als read-api.mjs und führen Sie node read-api.mjs aus:
import { randomUUID } from 'node:crypto'
import { Transloadit } from '@transloadit/node'
const { TRANSLOADIT_KEY, TRANSLOADIT_SECRET, TRANSLOADIT_URL } = process.env
if (!TRANSLOADIT_KEY || !TRANSLOADIT_SECRET || !TRANSLOADIT_URL) {
throw new Error('Set TRANSLOADIT_KEY, TRANSLOADIT_SECRET, and TRANSLOADIT_URL')
}
const transloadit = new Transloadit({
authKey: TRANSLOADIT_KEY,
authSecret: TRANSLOADIT_SECRET,
})
const { params, signature } = transloadit.calcSignature({ nonce: randomUUID() })
const url = new URL(TRANSLOADIT_URL)
url.searchParams.set('params', params)
url.searchParams.set('signature', signature)
const response = await fetch(url, { redirect: 'error' })
if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`)
const result = await response.json()
if (result.error) throw new Error(result.error)
console.log(JSON.stringify(result, null, 2))
MCP-Client per URL verbinden
Agent-Clients wie ChatGPT, Codex, Claude.ai, Claude Desktop, Claude Code und Cursor verbinden sich
mit dem gehosteten MCP-Server unter https://api2.transloadit.com/mcp allein über diese URL. Die Transloadit API
ist dafür ein Autorisierungsserver nach OAuth 2.1: Der Client ermittelt die Endpunkte, identifiziert
sich, leitet Sie zur Console weiter, damit Sie sich anmelden und zustimmen, und erhält schließlich ein kurzlebiges Bearer-Token
für die Audience mcp sowie ein Refresh-Token. Kein Auth Secret verlässt jemals Ihr Konto.
- Endpunktermittlung. Der MCP-Server beantwortet nicht authentifizierte Anfragen mit
401und einem HeaderWWW-Authenticate: Bearer resource_metadata="https://api2.transloadit.com/.well-known/oauth-protected-resource/mcp". Dieses RFC 9728-Dokument nennthttps://api2.transloadit.comals Autorisierungsserver, dessen RFC 8414-Metadaten unterhttps://api2.transloadit.com/.well-known/oauth-authorization-serverdie unten aufgeführten Endpunkte auflisten. - Client-Identifikation. Legen Sie entweder ein
Client ID Metadata Document vor:
eine HTTPS-URL, die die
client_idist und JSON mit derselbenclient_id, einemclient_nameund denredirect_urisausliefert. Oder registrieren Sie den Client einmalig über RFC 7591 Dynamic Client Registration unterhttps://api2.transloadit.com/oauth/register; Clients senden entweder nur ihreclient_id(token_endpoint_auth_method: "none") oder authentifizieren sich mitprivate_key_jwtund einerjwks_uri, und die Antwort enthält eine opakeclient_id. Redirect-URIs müssen HTTPS-URLs sein, die exakt abgeglichen werden, oder Loopback-URLshttp://localhost/http://127.0.0.1, die auf jedem Port akzeptiert werden. Token-Anfragen authentifizieren den Client mitnoneoderprivate_key_jwt, je nachdem, was sein Dokument auflistet (intoken_endpoint_auth_methods_supportedoder andernfalls alstoken_endpoint_auth_method) oder seine Registrierung angibt. Die erste Token-Anfrage bindet den Grant an die von ihr verwendete Methode: Sobald eine Anfrage für einen Grant eine RFC 7523-client_assertionenthält, muss auch jede spätere Token- und Widerrufsanfrage dafür eine enthalten. Diese Assertion ist ein JWT, das (mit RS256 oder ES256) mit einem Schlüssel aus derjwks_urides Clients signiert ist, mit der Client-ID alsissundsub. Ihraudist eine konfigurierte Token-Endpunkt-URL oder deren Origin (ohne abschließenden Schrägstrich) für dieses Deployment. Sie hat einexpinnerhalb von fünf Minuten und einejti, die pro Client und Region einmal akzeptiert wird, solange die Assertion gültig bleibt. Verwenden Sie für jede Anfrage eine neuejti. - Zustimmung. Der Client öffnet
https://transloadit.com/c/oauth/authorizemitresponse_type=code, seinerclient_id,redirect_uri, einer PKCE-code_challenge(nurS256), optionalscopeundstatesowieresource=https://api2.transloadit.com/mcp. Sie melden sich an, wählen einen Workspace aus und stimmen zu; die Console leitet den Browser mitcode, Ihremstateundiss=https://api2.transloadit.comzurück. Der Code ist an den Client, die Redirect-URI, die Challenge und den Workspace gebunden und läuft nach 120 Sekunden ab. - Tokens. Der Client sendet per POST
grant_type=authorization_codemitcode,code_verifier,client_idundredirect_urianhttps://api2.transloadit.com/tokenund erhält einaccess_token(standardmäßig 604.800 Sekunden, also 7 Tage, gültig), dessenscopeund einrefresh_token. Ein POST vongrant_type=refresh_tokenmitrefresh_tokenundclient_idliefert ein neues Paar und setzt das vorgelegte Refresh-Token außer Kraft; Refresh-Tokens sind 30 Tage gültig, und die Wiederverwendung eines außer Kraft gesetzten Tokens widerruft die gesamte Token-Linie. - Widerruf. Senden Sie per POST
token(ein Access- oder Refresh-Token) anhttps://api2.transloadit.com/oauth/revokegemäß RFC 7009, oder widerrufen Sie die Verbindung in der Console.
Der resource-Indikator (RFC 8707) entscheidet, wofür das
Token bestimmt ist. resource=https://api2.transloadit.com/mcp (der Standard, wenn er weggelassen wird) erstellt ein mcp-Token, das
höchstens die sicheren MCP-Scopes (assemblies:write, assemblies:read, templates:read) trägt, eingeschränkt auf das, was der
Auth Key des Workspaces gewährt, und das nur der MCP-Server akzeptiert. resource=https://api2.transloadit.com (mit oder
ohne abschließenden Schrägstrich) erstellt ein api2-Token für Anwendungen, die die REST API direkt aufrufen,
etwa Vercel Connect-Integrationen: Es trägt die
angeforderten Scopes, eingeschränkt auf die Scopes des Auth Keys, oder alles, was der Schlüssel gewährt, wenn scope
weggelassen wird, mit der Ausnahme, dass ein Grant niemals die Verwaltung von Auth Keys oder Template-Zugangsdaten umfasst
(auth_keys:*, template_credentials:* oder die globalen read/write, die diese implizieren), sodass es keine
dauerhaften Zugangsdaten erstellen oder offenlegen kann. Jede andere resource wird mit invalid_target beantwortet.
OAuth-Protokollfehler bei Client-Registrierung, Autorisierung und Widerruf verwenden
den Standard-Body mit error und error_description; Rate Limits können RATE_LIMIT_REACHED zurückgeben.
Bei /token verwenden OAuth-Grant-Fehler für authorization_code und refresh_token den Standard-Body mit
error und error_description. Rate Limits geben RATE_LIMIT_REACHED (429) zurück, und
unerwartete interne Fehler geben SERVER_500 (500) zurück. Fehlerhafte Anfragen, die abgelehnt werden,
bevor der Grant identifiziert ist, können eine HTTP-Basic-Challenge (401) erhalten oder
TOKEN_INVALID_REQUEST, falls Basic-Zugangsdaten mitgesendet wurden.
Bearer-Tokens (Client Credentials)
CI-Jobs, Server und andere Headless-Clients, die über einen
Auth Key und ein Auth Secret verfügen, tauschen diese gegen ein kurzlebiges Bearer-Token ein,
und zwar mit dem client_credentials-Grant von OAuth 2.0, der direkt von der Transloadit API verarbeitet wird. Verwenden Sie dies, wenn kein Browser
für die Zustimmung zur Verfügung steht; interaktive MCP-Clients sollten sich wie oben beschrieben per URL verbinden. Die vollständige
Endpunktreferenz finden Sie in der /token-API-Dokumentation.
Das Token verwenden
Übergeben Sie das Token bei API-Anfragen als Authorization: Bearer <access_token>. Wenn eine Anfrage
mit einem gültigen Bearer-Token authentifiziert ist, betrachtet API2
Signature Authentication als erfüllt und
überspringt die Signaturprüfung. Signature Authentication wird nur bei Anfragen mit Key/Secret erzwungen.
Prüfungen von Scope und Audience gelten weiterhin. Tokens mit der Audience mcp werden vom MCP-Server akzeptiert, der
sie mit Dienst-Zugangsdaten an API2 weiterleitet; werden sie direkt regulären API2-Endpunkten vorgelegt,
werden sie abgelehnt. Sie können auth.key in params weglassen, aber der params-Umschlag ist für Endpunkte,
die ihn erwarten, weiterhin erforderlich.
curl --fail-with-body -sS --request POST \
--url 'https://api2.transloadit.com/assemblies' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
--form 'params={"template_id":"YOUR_TEMPLATE_ID"}'
MCP-Auto-Auth für /ai/chat
Wenn Ihre /ai/chat-Steps einen von Transloadit gehosteten MCP-Server aufrufen, kann API2 automatisch ein kurzlebiges
Bearer-Token erstellen und einfügen (Auto-Auth). Dies muss pro MCP-Server-Eintrag aktiviert werden (Opt-in):
{
"mcp_servers": [
{
"type": "http",
"url": "https://api2.transloadit.com/mcp",
"auth": "transloadit"
}
]
}
Verhalten:
- Wenn
auth: "transloadit"gesetzt ist und keinAuthorization-Header vorhanden ist, erstellt API2 ein Token und fügtAuthorization: Bearer <token>ein. - Wenn
Authorizationbereits inmcp_servers[].headersangegeben ist, bleibt es unverändert. - Auto-Auth funktioniert nur über HTTPS für von Transloadit verwaltete Apex-Hosts und Subdomains:
transloadit.com,*.transloadit.com,transloadit.dev,*.transloadit.dev,transloadit.website,*.transloadit.website,transloadit.work,*.transloadit.work. - Die URL muss Port
443und exakt den Pfad/mcpoder einen Unterpfad unterhalb von/mcp/verwenden. - Die URL darf keine Zugangsdaten, keinen Query-String und kein Fragment enthalten.
- Der Auth Key muss mindestens einen dieser sicheren MCP-Scopes gewähren:
assemblies:write,assemblies:read,templates:read. - Das erstellte Token wird auf die Schnittmenge dieser sicheren MCP-Scopes und der Scopes des Auth Keys eingeschränkt; es erhält niemals einen Scope, den der Auth Key nicht gewährt.
Häufige Fragen
Fügt Transloadit seinen Anfragen Signaturen bei?
Transloadit signiert Webhook-Anfragen, damit Ihr Server ihre Echtheit prüfen kann. Das Signieren von Webhooks ist getrennt von dem HMAC, der an Transloadit gesendete API-Anfragen authentifiziert.
Warum kann ich mein Auth Secret nicht als Bearer-Token verwenden?
Abgesehen vom oben beschriebenen Token-Austausch zwischen Servern darf Ihr Auth Secret
niemals an einen Client übertragen oder in API-Anfrageparameter aufgenommen werden. POST /token sendet es als
HTTP-Basic-Passwort über HTTPS und darf nur von Ihrem Back-End aus aufgerufen werden. Bei signierten Anfragen
bleibt das Secret in Ihrem Back-End und wird als HMAC-Schlüssel verwendet. Dies verhindert, dass ein Angreifer
eine signierte Anfrage abfängt und Anfragen an Ihr Konto fälscht. Schützen Sie Ihr Auth Secret mit
einem Secret-Management-System Ihrer Wahl. Beispiele sind: Vault,
AWS Secrets Manager,
GCP Secret Manager und
Kubernetes Secrets, es gibt aber noch viele
weitere, die je nach gewählter Back-End-Plattform geeignet sein könnten.
Stellen Sie sicher, dass Auth Secrets niemals Teil des Front-Ends Ihrer Anwendung sind oder Nutzern offengelegt werden.
In welcher Reihenfolge müssen die Schlüssel im Body stehen?
Die Reihenfolge der Schlüssel im Body können Sie frei wählen. Wichtig ist jedoch, dass die gewählte Reihenfolge mit Ihrer Signaturerzeugung übereinstimmt. Der erzeugte Hash hängt vom Inhalt des JSON ab, und eine andere Reihenfolge erzeugt einen anderen Hash, sodass Ihre Anfrage abgelehnt wird.