Antipadrão: definir um tempo de expiração longo para tokens OAuth

Esta é a documentação da Apigee e da Apigee híbrida.
Confira a documentação da Apigee Edge.

A Apigee fornece o framework OAuth 2.0 para proteger APIs. O OAuth2 é um dos esquemas de autorização e autenticação de padrão aberto com base em tokens mais conhecidos. Ele permite que os aplicativos clientes acessem as APIs em nome dos usuários sem que eles precisem divulgar o nome de usuário e a senha.

A Apigee permite que os desenvolvedores gerem tokens de acesso e/ou de atualização implementando um dos quatro tipos de concessão do OAuth2: credenciais de cliente, senha, implícito e código de autorização: como usar a política OAuthv2. Os aplicativos clientes usam os tokens de acesso para consumir APIs seguras. Cada token de acesso tem seu próprio tempo de expiração, que pode ser definido na política OAuthv2.

Os tokens de atualização podem ser emitidos junto com os tokens de acesso com alguns dos tipos de concessão. Os tokens de atualização serão usados para receber novos tokens de acesso válidos depois que o token de acesso original expirar ou ser revogado. O tempo de expiração dos tokens de atualização também pode ser definido na política do OAuthv2 (em inglês).

Antipadrão

A definição de um tempo de expiração longo para um token de acesso e/ou token de atualização na política OAuthv2 leva ao acúmulo de tokens OAuth e a um aumento no uso de espaço em disco nos nós do Cassandra.

O seguinte exemplo de política OAuthV2 mostra um tempo de expiração longo de 200 dias para tokens de atualização:

<OAuthV2 name="GenerateAccessToken">
    <Operation>GenerateAccessToken</Operation>
    <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes -->
    <RefreshTokenExpiresIn>17280000000</RefreshTokenExpiresIn> <!-- 200 days -->
    <SupportedGrantTypes>
      <GrantType>password</GrantType>
    </SupportedGrantTypes>
    <GenerateResponse enabled="true"/>
</OAuthV2>

No exemplo acima:

  • O token de acesso é definido com um tempo de expiração razoavelmente menor de 30 minutos.
  • O token de atualização está definido com um tempo de expiração muito longo de 200 dias.
  • Se o tráfego para essa API for de dez solicitações/segundo, ele poderá gerar até 864.000 tokens em um dia.
  • Como os tokens de atualização expiram somente depois de 200 dias, eles permanecem no armazenamento de dados (Cassandra) por muito tempo, levando a um acúmulo contínuo.

Impacto

  • Leva a um crescimento significativo do uso de espaço em disco no armazenamento de dados (Cassandra).

Prática recomendada

Use um tempo de expiração menor adequado para os tokens de acesso e de atualização OAuth, dependendo dos seus requisitos de segurança específicos, para que eles sejam limpos rapidamente e, assim, evitem acúmulos.

Defina o tempo de expiração para os tokens de atualização de maneira que seja válido por um período um pouco mais longo do que os tokens de acesso. Por exemplo, se você definir 30 minutos para o token de acesso, defina (pelo menos) 24 horas para o token de atualização.

Isso garantirá que:

  • Haja bastante tempo para usar um token de atualização para gerar novos tokens de acesso e de atualização após a expiração do token de acesso.
  • Os tokens de atualização expirem um pouco mais tarde e possam ser limpos em tempo hábil para evitar acúmulos.

Leitura adicional