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: Le informazioni 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.

Lista di IP consentiti per le App di Crowdin

Se hai configurato una lista di IP consentiti per la tua organizzazione di Crowdin Imprese, devi aggiungere il tuo indirizzo IP dell’app di Crowdin alla lista di IP consentiti della tua organizzazione. Inoltre, implementa la stessa lista di IP consentiti nella tua app di Crowdin per una maggiore sicurezza. In questo caso, assicurati di aggiungere i seguenti indirizzi IP di Crowdin Imprese:

Vedi Anche

Questo articolo è stato utile?