Establece un tiempo de vencimiento prolongado para los tokens de OAuth

Estás viendo la documentación de Apigee Edge.
Ve a la Documentación de Apigee X.
información

Apigee Edge proporciona el framework de OAuth 2.0 para APIs seguras. OAuth2 es uno de los esquemas más populares de autorización y autenticación de estándar abierto y basado en tokens. Permite que las aplicaciones cliente accedan a las API en nombre de los usuarios sin que estos tengan que revelar su nombre de usuario y contraseña.

Apigee Edge permite que los desarrolladores generen tokens de acceso o actualización mediante la implementación de cualquiera de los cuatro tipos de otorgamiento de OAuth2. credenciales de cliente, contraseña, implícita y código de autorización - con la política OAuthv2. Las aplicaciones cliente usan tokens de acceso para consumir API seguras. Cada token de acceso tiene su propia fecha de vencimiento, que se puede configurar en la política de OAuthv2.

De forma opcional, los tokens de actualización se emiten junto con los tokens de acceso con algunos tipos de otorgamiento. Los tokens de actualización se usan para obtener nuevos tokens de acceso válidos después de que el token de acceso original venza o se revoque. El vencimiento para los tokens de actualización también se puede establecer en la política de OAuthv2.

Antipatrón

Configurar un tiempo de vencimiento prolongado para un token de acceso o un token de actualización en la política de OAuthv2 genera una acumulación de tokens de OAuth y un mayor uso de espacio en el disco en los nodos de Cassandra.

La siguiente política de OAuthV2 de ejemplo muestra un tiempo de caducidad prolongado de 200 días para los tokens de actualización:

<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>

En el ejemplo anterior, se muestra lo siguiente:

  • El token de acceso se configura en un tiempo de vencimiento razonable de 30 minutos.
  • El token de actualización se establece con un período de vencimiento muy largo de 200 días.
  • Si el tráfico a esta API es de 10 solicitudes por segundo, puede generar 864,000 tokens por día.
  • Dado que los tokens de actualización vencen solo después de 200 días, persisten en el almacén de datos (Cassandra) por un tiempo prolongado que llevan a una acumulación continua.

Impacto

  • Genera un crecimiento significativo del uso del espacio en disco en el almacén de datos (Cassandra).
  • Para los usuarios de la nube privada, esto podría aumentar los costos de almacenamiento o, en el peor de los casos, el disco podría llenarse y provocar errores en el tiempo de ejecución o una interrupción.

Práctica recomendada

Usa un tiempo de vencimiento adecuado para los tokens de acceso y actualización de OAuth según tus requisitos de seguridad específicos, de modo que se borren rápidamente y, por lo tanto, se eviten la acumulación.

Configura el tiempo de vencimiento para los tokens de actualización de tal manera que sean válidos durante un período un poco más largo que los tokens de acceso. Por ejemplo, si estableces 30 minutos para el token de acceso y 60 minutos para token de actualización.

Esto garantiza lo siguiente:

  • Hay tiempo suficiente para usar un token de actualización a fin de generar nuevos tokens de acceso y actualización después de que el token de acceso vence.
  • Los tokens de actualización vencerán un poco más tarde y se pueden borrar definitivamente de manera oportuna a fin de evitar la acumulación.

Lecturas adicionales