Para garantir o alto nível de segurança para os casos em que o aplicativo Crowdin trabalha com os dados do Crowdin Enterprise (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 Enterprise 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 Enterprise.
Para implementar a autorização e autenticação em seu aplicativo Crowdin, siga estas etapas:
authorization_code
ao descritor do aplicativo e adicione o ID do cliente OAuth que será usado para autorização.Usando os métodos acima, em cada solicitação para o aplicativo Crowdin, Crowdin Enterprise 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 Enterprise para abrir a página de um módulo.
Parâmetros de consulta:
jwtToken | Tipo: Descrição: Token JWT usado para autorização. |
origin | Tipo: Descrição: Host usado para abrir uma página de módulo. |
clientId | Tipo: 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.
O token JWT consiste nas seguintes partes:
Exemplo de carga útil do token JWT:
{
"aud": "Br4a2hpQiNW96anuuO4a",
"sub": "1",
"domain": null,
"context": {},
"iat": 1600000000,
"exp": 1600000900
}
Propriedades:
aud | Tipo: Descrição: ID do cliente OAuth que emitiu o token. |
sub | Tipo: Descrição: Identificador do usuário que está fazendo uma solicitação ao aplicativo Crowdin. |
domain | Tipo: Requerido: sim Descrição: O nome da organização a partir da qual o aplicativo é acessado. |
contexto | Tipo: Description: The information about the environment where the Crowdin app module is opened (e.g., project, organization, locale, user's timezone, etc.). |
iat | Tipo: Descrição: Identifica o tempo da edição do token. |
exp | Tipo: Descrição: Identifica o tempo de expiração do token. |
If you configured an IP allowlist for your Crowdin Enterprise organization, you need to add your Crowdin app’s IP address to your organization’s IP allowlist. Also, implement the same IP allowlist in your Crowdin app for improved security. In this case, make sure to add the following IP addresses of Crowdin Enterprise: