For at sikre et højt sikkerhedsniveau i situationer, hvor Crowdin-appen håndterer data fra Crowdin (f.eks. bruger godkendelsen via authorization_code
), er en sikkerhedsmekanisme udviklet. 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.
Følg disse trin for at implementere godkendelse og bekræftelse i Crowdin-appen:
authorization_code
til app-descriptor’en og tilføj OAuth Client ID’et, der vil blive brugt til godkendelse.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.
Nedenfor ses et eks. på URL’en brugt af Crowdin til at åbne en modulside.
Forespørgselsparametre:
jwtToken | Type: Beskrivelse: JWT-token bruges til godkendelse. |
origin | Type: Beskrivelse: Vært brugt til at åbne en modulside. |
clientId | Type: 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.
Et JWT-token udgøres af flg. dele:
JWT-token payload eks.:
{
"aud": "Br4a2hpQiNW96anuuO4a",
"sub": "1",
"domain": null,
"context": {},
"iat": 1600000000,
"exp": 1600000900
}
Egenskaber:
aud | Type: Beskrivelse: OAuth-klients ID brugt til tokenudstedelse. |
sub | Type: Beskrivelse: Identifikator for den bruger, der fremsætter en anmodning til Crowdin-appen. |
domain | Type: Required: yes Beskrivelse: Navnet på organisationen, hvorfra appen tilgås. For Crowdin, er domæneværdien altid |
context | Type: Description: The information about the environment where the Crowdin app module is opened (e.g. project, locale, user's timezone, etc.). |
iat | Type: Beskrivelse: Identificerer token-udstedelsestidspunktet. |
exp | Type: Beskrivelse: Identificerer token-udløbstidspunktet. |