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

Você está vendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
informações

O Apigee Edge 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.

O Apigee Edge permite que os desenvolvedores gerem tokens de acesso e/ou de atualização implementando qualquer um dos quatro tipos de concessão do OAuth2 (credenciais do cliente, senha, implícita e código de autorização) usando a política do 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

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

O exemplo de política OAuthV2 a seguir mostra um prazo de validade 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 prazo de validade razoavelmente menor, de 30 minutos.
  • O token de atualização é definido com um prazo de validade muito longo de 200 dias.
  • Se o tráfego dessa API for de 10 solicitações/segundo, ela 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).
  • Para usuários da nuvem privada, isso pode aumentar os custos de armazenamento ou, na pior das hipóteses, o disco pode ficar cheio e gerar erros de ambiente de execução ou interrupção.

Prática recomendada

Use um prazo de validade menor apropriado para tokens de acesso e atualização do OAuth, dependendo dos seus requisitos de segurança específicos, para que eles sejam limpos rapidamente e, assim, evitem o acúmulo.

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 e, em seguida, definir 60 minutos para o token de atualização.

Isso garante que:

  • Há tempo suficiente para usar um token de atualização e gerar novos tokens de acesso e atualização depois que o token de acesso expirar.
  • Os tokens de atualização expirem um pouco mais tarde e possam ser limpos em tempo hábil para evitar acúmulos.

Leitura adicional