Zum Inhalt springen

OAuth-Apps autorisieren

Sie können Organisationsmitgliedern ermöglichen, Ihre OAuth-App zu autorisieren.

Wenn du eine OAuth-App erstellst, implementiere den unten beschriebenen Ablauf für Webanwendungen, um einen Autorisierungscode zu erhalten und ihn anschließend gegen ein Token auszutauschen.

Du wählst den Anwendungstyp bei der Registrierung aus. Eine vertrauliche Anwendung autorisiert sich mit einem Client-Secret. Das eignet sich für Apps mit einem vertrauenswürdigen Backend, das das Secret geheim halten kann. Eine öffentliche Anwendung autorisiert sich mit PKCE und hat kein Client-Secret. Das eignet sich für Single-Page-Apps (SPA), mobile Apps und CLI-Apps.

Du solltest den Benutzer mit den folgenden GET-Parametern zum Endpunkt /oauth/authorize weiterleiten:

Terminal-Fenster
https://accounts.crowdin.com/oauth/authorize

Damit wird der Benutzer aufgefordert, den Zugriff der App auf sein Konto basierend auf den in REQUESTED_SCOPES angegebenen Berechtigungsbereichen zu genehmigen. Anschließend wird er zu der REDIRECT_URI zurückgeleitet, die du beim Erstellen der App angegeben hast.

NameWertBeschreibung
client_idstringErforderlich. Beim Registrieren der App erhältst du die Client-ID für die App.
redirect_uristringErforderlich. Die URL in deiner Anwendung, zu der Benutzer nach der Autorisierung weitergeleitet werden.
response_type:codestringErforderlich. Dieser Parameter wird für die Ablaufdefinition einer OAuth-App verwendet.
scopestringErforderlich. Wähle aus der Liste der verfügbaren Berechtigungsbereiche den Zugriff aus, den deine App benötigt. Du kannst mehrere Berechtigungsbereiche durch Leerzeichen getrennt hinzufügen (Anführungszeichen sind nicht erforderlich).
statestringDringend empfohlen. Eine nicht erratbare zufällige Zeichenfolge. Verwende sie als zusätzlichen Schutz gegen Cross-Site-Request-Forgery-Angriffe.
code_challengestringFür öffentliche Anwendungen erforderlich, für vertrauliche Anwendungen dringend empfohlen. Ein Base64-URL-codierter SHA-256-Hash des code_verifier. Wird verwendet, um den Autorisierungsablauf mit PKCE abzusichern. Eine öffentliche Anwendung, die ihn weglässt, erhält statt eines Autorisierungscodes den Fehler invalid_request. Erfahre mehr über PKCE RFC.
code_challenge_methodstringDringend empfohlen. Die Methode, mit der der code_challenge abgeleitet wird. Crowdin unterstützt S256 und plain. Sende S256. Wenn dieser Parameter weggelassen wird, ist plain die Standardmethode. Dabei wird der Verifier ohne Hashing übertragen.

Die folgende Autorisierungs-URL wird erstellt:

Terminal-Fenster
https://accounts.crowdin.com/oauth/authorize?client_id=m50YenPpqac8u5D4dnK&redirect_uri=https://impact-mobile.com/auth/crowdin&response_type=code&scope=project+tm&state=d131dd02c5e6eec4

Nach erfolgreicher Autorisierung werden Benutzer zu deiner Website zurückgeleitet:

Terminal-Fenster
https://impact-mobile.com/auth/crowdin/?code=def50200df1fbb5ebac05f9288850d9e...0835bd3cf42&state=d131dd02c5e6eec4

Wenn die Autorisierung abgelehnt wurde, werden Benutzer mit einem Fehler zu deiner Website zurückgeleitet:

Terminal-Fenster
https://impact-mobile.com/auth/crowdin/?error=access_denied&state=d131dd02c5e6eec4

Wenn ein Benutzer die App autorisiert, leitet Crowdin ihn zurück zu deiner Website. Dort kannst du den erhaltenen Code gegen ein Zugriffstoken austauschen:

Terminal-Fenster
POST https://accounts.crowdin.com/oauth/token
NameWertBeschreibung
grant_type: authorization_codestringErforderlich. Dieser Parameter wird für die Ablaufdefinition einer OAuth-App verwendet.
client_idstringErforderlich. Beim Registrieren der App erhältst du die Client-ID für die App.
client_secretstringFür vertrauliche Anwendungen erforderlich. Beim Registrieren der App erhältst du das Client-Secret für die App. Das Senden eines code_verifier ersetzt es nicht. Öffentliche Anwendungen besitzen kein Client-Secret und lassen diesen Parameter weg.
redirect_uristringErforderlich. Die URL in deiner Anwendung, zu der Benutzer nach der Autorisierung weitergeleitet werden.
codestringErforderlich. Code, der aus dem Callback-Query-String empfangen wurde.
code_verifierstringErforderlich, wenn die Autorisierungsanfrage einen code_challenge enthielt. Die ursprüngliche zufällige Zeichenfolge, die zum Erzeugen des code_challenge verwendet wurde. Sowohl vertrauliche als auch öffentliche Anwendungen senden ihn.

Beispielsweise sieht eine Anfrage mit curl wie folgt aus:

Terminal-Fenster
curl -X POST \
https://accounts.crowdin.com/oauth/token \
-H "content-type: application/json" \
-d "{
\"grant_type\":\"authorization_code\",
\"client_id\":\"m50YenPpqac8u5D4dnK\",
\"client_secret\":\"yz35kYtjox...YE9Am\",
\"redirect_uri\":\"https://impact-mobile.com/auth/crowdin\",
\"code\":\"def50200df1fbb5ebac05f9288850d9e...0835bd3cf42\"
}"

Standardmäßig hat die Antwort die folgende Form:

{
"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJS...lag1e_Zk4EdJ5diYfz0",
"token_type":"bearer",
"expires_in": 7200,
"refresh_token": "b213c684ccaa7db1217e946e6ad...fff7ae"
}

Mit dem Zugriffstoken kannst du nun im Namen des autorisierten Benutzers Anfragen an die Crowdin API senden.

Beispielsweise kannst du in curl den folgenden Authorization-Header setzen:

Terminal-Fenster
curl -H "Authorization: Bearer ACCESS_TOKEN" https://api.crowdin.com/api/v2/projects

Crowdin Enterprise:

Terminal-Fenster
curl -H "Authorization: Bearer ACCESS_TOKEN" https://<organization_domain>.api.crowdin.com/api/v2/projects

Weitere Infürmationen zu Sicherheit für Crowdin Apps.

Das Zugriffstoken, das ein Benutzer nach der Autorisierung der App erhält, hat eine begrenzte Gültigkeitsdauer. Das Zugriffstoken läuft nach der in der Antwort angegebenen Anzahl von Sekunden ab.

Um ein Token zu erneuern, ohne den Benutzer erneut weiterleiten zu müssen, sende die folgenden Body-Parameter per POST-Anfrage an den Autorisierungsserver:

Terminal-Fenster
POST https://accounts.crowdin.com/oauth/token
NameWertBeschreibung
grant_type: refresh_tokenstringErforderlich. Dieser Parameter wird für die Ablaufdefinition einer OAuth-App verwendet.
client_idstringErforderlich. Beim Registrieren der App erhältst du die Client-ID für die App.
client_secretstringFür vertrauliche Anwendungen erforderlich. Beim Registrieren der App erhältst du das Client-Secret für die App. Öffentliche Anwendungen lassen diesen Parameter weg.
refresh_tokenstringErforderlich. Refresh-Token, das aus der letzten Autorisierungsantwort empfangen wurde.

Beispielsweise sieht eine Anfrage mit curl wie folgt aus:

Terminal-Fenster
curl -X POST \
https://accounts.crowdin.com/oauth/token \
-H "content-type: application/json" \
-d "{
\"grant_type\":\"refresh_token\",
\"client_id\":\"m50YenPpqac8u5D4dnK\",
\"client_secret\":\"yz35kYtjox...YE9Am\",
\"refresh_token\":\"b213c684ccaa7db1217e946e6ad...fff7ae\"
}"

Standardmäßig hat die Antwort die folgende Form:

{
"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJS...ZjFkMWI4OWFlIiwiaWF",
"token_type":"bearer",
"expires_in": 7200,
"refresh_token": "ea506ea4c37aa152f0a91ed2482...4a0c567"
}

Du kannst eine oder mehrere Weiterleitungs-URLs registrieren, wenn du eine OAuth-Anwendung in Crowdin erstellst.

Aus Sicherheitsgründen kannst du Benutzer nach der Autorisierung nicht zu einer URL weiterleiten, wenn diese URL nicht in den Informationen der Anwendung enthalten ist.

War diese Seite hilfreich?