Security for Crowdin Apps

To ensure the high level of security for cases when the Crowdin app works with the data from Crowdin (i.e. uses the authorization via crowdin_app), we’ve developed a security mechanism. Hovedprincippet i denne sikkerhedsmekanisme er baseret på udvekslingen af et JWT-token mellem Crowdin og Crowdin-appen. JWT-token’et er signeret med en OAuth Client-hemmelighed kun kendt af de to deltagende parter. På denne måde kan Crowdin-appen få en bekræftelse af, at siden er åbnet specifikt i Crowdin.

Implementering

Følg disse trin for at implementere godkendelse og bekræftelse i Crowdin-appen:

  • Tilføj godkendelsen via authorization_code til app-descriptor’en og tilføj OAuth Client ID’et, der vil blive brugt til godkendelse.
  • Tilføj callback’en til den Crowdin-app, der skal håndtere Installed Event.
  • Angiv det aktuelle sæt af udstrækninger krævet for Crowdin-appen i app-deskriptor’en. Det angivne sæt af udtrækninger bør ikke overskride udtrækningerne angivet i OAuth.

Vha. ovenstående metoder for hver anmodning til Crowdin-appen, vil Crowdin videreformidle et sæt parametre sammen med et sikkerhedstoken, som kan valideres af en hemmelighed fra OAuth.

Below you can see an example of the URL used by Crowdin to open a module page.

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

Forespørgselsparametre:

jwtToken

Type: string

Beskrivelse: JWT-token bruges til godkendelse.

origin

Type: string (url)

Beskrivelse: Vært brugt til at åbne en modulside.

clientId

Type: string

Beskrivelse: OAuth-klients ID brugt til godkendelse.

Den bedste praksis vil være at føje middleware til Crowdin-appen for at bekræfte, om hver anmodning har et token med en gyldig signatur og udløbsdato. Et af de eksisterende biblioteker kan bruges til at bekræfte token-ægtheden.

JWT-tokenstruktur

Et JWT-token udgøres af flg. dele:

  • Header - indeholder information om typen af token og kodningsalgoritmer.
  • Payload - indeholder yderligere oplysninger om udstedelses- og udløbsdatoer for token’et, oplysninger om tokenudstederen og anmoderen samt yderligere kontekstuel information.
  • Signatur - delen med en signatur baseret på header og payload.

JWT-token payload eks.:

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

Egenskaber:

aud

Type: string

Beskrivelse: OAuth-klients ID brugt til tokenudstedelse.

sub

Type: string

Beskrivelse: Identifikator for den bruger, der fremsætter en anmodning til Crowdin-appen.

domain

Type: string|null

Required: yes

Beskrivelse: Navnet på organisationen, hvorfra appen tilgås. For Crowdin, er domæneværdien altid null

context

Type: object

Description: The information about the environment where the Crowdin app module is opened (e.g. project, locale, user's timezone, etc.).

iat

Type: int

Beskrivelse: Identificerer token-udstedelsestidspunktet.

exp

Type: int

Beskrivelse: Identificerer token-udløbstidspunktet.

Var denne artikel nyttig?