Zum Inhalt springen

Sicherheit für Crowdin-Apps

Wenn du eine selbst gehostete App erstellst, die mit Daten von Crowdin arbeitet, authentifiziert sie sich mit crowdin_app und erhält bei jeder von Crowdin gesendeten Anfrage ein signiertes JWT-Token. Durch die Überprüfung dieses Tokens kann die App erkennen, ob eine Anfrage tatsächlich von der erwarteten Quelle stammt.

Beide SDKs übernehmen das für dich: Das Crowdin Apps SDK validiert das Token und extrahiert den Kontext, während eine serverlose App überhaupt kein Token erhält. Der folgende Abschnitt richtet sich an Apps, die Anfragen selbst überprüfen, beispielsweise eine App, die in einer anderen Sprache geschrieben wurde.

Crowdin öffnet eine Modulseite mit dem Token und seinem Kontext in der Query-Zeichenfolge:

Terminal-Fenster
https://example.com/app-module?jwtToken=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJCcjRhMmhwUW……MX0.yt-lbv3Z8JyIGX4jG405mjZvX8lwc1q0EfWdTtm9GCc&origin=https://{domain}.crowdin.com&clientId=your-client-id

Query-Parameter:

jwtToken

Typ: string

Beschreibung: JWT-Token, das zur Autorisierung verwendet wird.

origin

Typ: string (url)

Beschreibung: Host, der zum Öffnen einer Modulseite verwendet wird.

clientId

Typ: string

Beschreibung: Die ID des für die Autorisierung verwendeten OAuth-Clients.

Das Token ist mit dem OAuth-Client-Secret signiert, das nur Crowdin und deine App kennen. Eine gültige Signatur ist daher ein Nachweis dafür, woher die Anfrage stammt. Überprüfe die Signatur und den Ablaufzeitpunkt jedes Tokens, das deine App erhält, beispielsweise in einer Middleware, die vor dem restlichen Code ausgeführt wird. Jede der vorhandenen Bibliotheken übernimmt das für dich.

{
"aud": "Br4a2hpQiNW96anuuO4a",
"sub": "1",
"domain": null,
"context": {},
"iat": 1600000000,
"exp": 1600000900
}

Eigenschaften:

aud

Typ: string

Beschreibung: ID des OAuth-Clients, der das Token ausgestellt hat.

sub

Typ: string

Beschreibung: Kennung des Benutzers, der eine Anfrage an die Crowdin-App stellt.

domain

Typ: string|null

Beschreibung: Die Organisation, über die auf die App zugegriffen wird. Immer vorhanden und in Crowdin immer null.

context

Typ: object

Beschreibung: Die Umgebung, in der das Modul geöffnet wird, z. B. das Projekt, das Gebietsschema und die Zeitzone des Benutzers.

iat

Typ: integer

Beschreibung: Gibt den Ausstellungszeitpunkt des Tokens an.

exp

Typ: integer

Beschreibung: Gibt den Ablaufzeitpunkt des Tokens an.

War diese Seite hilfreich?