Antimodèle : définir un délai d'expiration long pour les jetons OAuth

<ph type="x-smartling-placeholder"></ph> Vous consultez la documentation Apigee Edge.
Accédez à la page Documentation sur Apigee X.
En savoir plus

Apigee Edge fournit le framework OAuth 2.0 pour des API sécurisées. OAuth2 est l'un des schémas les plus courants d'autorisation et d'authentification basée sur les jetons de norme ouverte. Il permet aux applications clientes d'accéder aux API pour le compte d'utilisateurs sans que ces derniers aient besoin de divulguer leur nom d'utilisateur et leur mot de passe.

Apigee Edge permet aux développeurs de générer des jetons d'accès et/ou d'actualisation en implémentant l'un des les quatre types d'octrois OAuth2 : identifiants client mot de passe, implicit ; code d'autorisation à l'aide de la règle OAuthv2. Les applications clientes utilisent des jetons d'accès pour utiliser des API sécurisées. Chaque jeton d'accès a son propre délai d'expiration, qui peut être défini dans la stratégie OAuthv2.

Les jetons d'actualisation sont éventuellement fournis avec des jetons d'accès avec certains types de subvention. Les jetons d'actualisation permettent d'obtenir de nouveaux jetons d'accès valides une fois que le jeton d'accès d'origine a expiré ou a été révoqué. Le délai d'expiration des jetons d'actualisation peut également être défini dans la stratégie OAuthv2.

Antimodèle

La définition d'un délai d'expiration long pour un jeton d'accès et/ou un jeton d'actualisation dans la stratégie OAuthv2 entraîne l'accumulation de jetons OAuth et l'augmentation de l'utilisation de l'espace sur les nœuds Cassandra.

L'exemple de stratégie OAuthV2 suivant affiche un délai d'expiration long de 200 jours pour les jetons d'actualisation:

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

Dans l'exemple ci-dessus :

  • Le jeton d'accès est défini avec un délai d'expiration raisonnable inférieur à 30 minutes.
  • Le jeton d'actualisation est défini sur un délai d'expiration très long de 200 jours.
  • Si le trafic vers cette API est de 10 requêtes/seconde, elle peut générer jusqu'à 864 000 jetons par jour.
  • Comme les jetons d'actualisation expirent uniquement après 200 jours, ils sont conservés dans le datastore (Cassandra) pendant une longue période, ce qui permet une accumulation continue.

Impact

  • Augmentation importante de l'utilisation de l'espace disque sur le datastore (Cassandra).
  • Pour les utilisateurs de cloud privé, cela peut augmenter les coûts de stockage ou, dans le pire des cas, le disque peut devenir saturé et entraîner des erreurs d'exécution ou une panne.

Bonne pratique

Utilisez un délai d'expiration approprié moindre pour les jetons d'accès et d'actualisation OAuth en fonction de vos exigences de sécurité spécifiques, afin qu'ils soient supprimés rapidement et ne puissent pas être accumulés.

Définissez le délai d'expiration des jetons d'actualisation de sorte qu'ils soient valides pendant une période plus longue que les jetons d'accès. Par exemple, si vous définissez 30 minutes pour le jeton d'accès, puis 60 minutes pour le jeton d'actualisation.

Ceci garantit les conditions suivantes:

  • Il y a amplement le temps de recourir à un jeton d'actualisation pour générer de nouveaux jetons d'accès et d'actualisation une fois le jeton d'accès expiré.
  • Les jetons d'actualisation expirent un peu plus tard et peuvent être supprimés en temps opportun pour éviter qu'ils ne s'accumulent.

Documentation complémentaire