Sicurezza per le App di Crowdin

Per assicurare l’alto livello di sicurezza per i casi in cui l’app di Crowdin funziona con i dati da Crowdin Imprese (es. usa l’autorizzazione tramite authorization_code), abbiamo sviluppato un meccanismo di sicurezza. Il principio principale di questo meccanismo di sicurezza è basato sullo scambio del token JWT tra Crowdin Imprese e l’app di Crowdin. JWT token is signed with an OAuth Client Secret known only to the two final parties. Così, l’app di Crowdin può ottenere una conferma che la pagina è aperta precisamente su Crowdin Imprese.

Implementation

To implement the authorization and authentication in your Crowdin app, follow these steps:

  • Add the authorization via authorization_code to your app descriptor and add the OAuth Client ID that will be used for authorization.
  • Aggiungi il callback alla tua app di Crowdin che gestirà l’Evento Installato.
  • Specify the necessary set of scopes in your app descriptor needed for your Crowdin app. The specified set of scopes shouldn’t exceed the scopes specified in the OAuth.

Usando i metodi suddetti, a ogni richiesta all’app di Crowdin, Crowdin Imprese passerà una serie di parametri insieme a un token di sicurezza, convalidabile da un segreto da OAuth.

Sotto puoi consultare un’esempio dell’URL usato da Crowdin Imprese per aprire una pagina del modulo.

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

Query parameters:

jwtToken

Type: string

Description: JWT token used for authorization.

origin

Type: string (url)

Description: Host used for opening a module page.

clientId

Type: string

Description: The ID of the OAuth Client used for authorization.

The best practice would be adding middleware to the Crowdin app to verify whether each request has a token with a valid signature and expiry. You can use one of the existing libraries to validate the authenticity of the token.

JWT Token Structure

JWT token consists of the following parts:

  • Header - contains information about the type of the token and encoding algorithms.
  • Payload - contains additional information about the issue and expiration dates of the token, the information about the token issuer and requestor, and other contextual information.
  • Signature - the part with a signature based on the header and payload.

JWT token payload example:

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

Properties:

aud

Type: string

Description: ID of the OAuth Client that issued the token.

sub

Type: string

Description: Identifier of the user that is making a request to the Crowdin app.

domain

Type: string|null

Required: yes

Description: The name of the organization from which the app is accessed.

contesto

Type: object

Descrizione: L'informazione sull'ambiente in cui è aperto il modulo dell'app di Crowdin (es. progetto, organizzazione, locale, fuso orario dell'utente, etc.).

iat

Type: int

Description: Identifies the issue time of the token.

exp

Type: int

Description: Identifies the expiration time of the token.

Questo articolo è stato utile?