Segurança para aplicativos para Crowdin

Para garantir o alto nível de segurança para os casos em que o aplicativo Crowdin trabalha com os dados do Crowdin (ou seja, usa a autorização via authorization_code), desenvolvemos um mecanismo de segurança. O princípio principal desse mecanismo de segurança é baseado na troca do token JWT entre o Crowdin e o aplicativo Crowdin. O token JWT é assinado com um segredo de cliente OAuth conhecido apenas pelas duas partes finais. Dessa forma, o aplicativo Crowdin pode obter uma confirmação de que a página foi aberta precisamente no Crowdin.

Implementação

Para implementar a autorização e autenticação em seu aplicativo Crowdin, siga estas etapas:

  • Adicione a autorização por meio de authorization_code ao descritor do aplicativo e adicione o ID do cliente OAuth que será usado para autorização.
  • Adicione o retorno de chamada ao seu aplicativo Crowdin que irá lidar com o evento instalado.
  • Especifique o conjunto necessário de escopos no descritor de aplicativo necessário para seu aplicativo Crowdin. O conjunto especificado de escopos não deve exceder os escopos especificados no OAuth.

Usando os métodos acima, em cada solicitação para o aplicativo Crowdin, Crowdin irá passar um conjunto de parâmetros junto com um token de segurança, que pode ser validado por um segredo do OAuth.

Abaixo você pode conferir um exemplo da URL usada por Crowdin para abrir a página de um módulo.

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

Parâmetros de consulta:

jwtToken

Tipo: string

Descrição: Token JWT usado para autorização.

origin

Tipo: string (url)

Descrição: Host usado para abrir uma página de módulo.

clientId

Tipo: string

Descrição: O ID do cliente OAuth usado para autorização.

A prática recomendada seria adicionar middleware ao aplicativo Crowdin para verificar se cada solicitação tem um token com uma assinatura e validade válidas. Você pode usar uma das bibliotecas existentes para validar a autenticidade do token.

Estrutura do Token JWT

O token JWT consiste nas seguintes partes:

  • Cabeçalho - contém informações sobre o tipo de token e algoritmos de codificação.
  • Carga útil - contém informações adicionais sobre as datas de emissão e expiração do token, as informações sobre o emissor e o solicitante do token e outras informações contextuais.
  • Assinatura - a parte com uma assinatura baseada no cabeçalho e na carga útil.

Exemplo de carga útil do token JWT:

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

Propriedades:

aud

Tipo: string

Descrição: ID do cliente OAuth que emitiu o token.

sub

Tipo: string

Descrição: Identificador do usuário que está fazendo uma solicitação ao aplicativo Crowdin.

domain

Tipo: string|null

Requerido: sim

Descrição: O nome da organização a partir da qual o aplicativo é acessado. Para Crowdin, o valor do domínio é sempre null

contexto

Tipo: object

Descrição: As informações sobre o ambiente em que o módulo do ãplicativo para Crowdin é aberto (por exemplo, projeto, localidade, fuso horário do usuário etc.).

iat

Tipo: int

Descrição: Identifica o tempo da edição do token.

exp

Tipo: int

Descrição: Identifica o tempo de expiração do token.

Este artigo foi útil?