Vous consultez la documentation d'Apigee et d'Apigee hybrid.
Consultez la documentation d'Apigee Edge.
Apigee fournit un ensemble d'outils et de règles qui vous permettent d'implémenter l'authentification basée sur les jetons OAuth 2.0 pour sécuriser vos API. OAuth2, décrit dans IETF RFC 6749, est la norme ouverte la plus largement acceptée pour l'authentification et l'autorisation des API. Il établit le jeton comme identifiant au format standard que les applications clientes envoient aux implémentations d'API. L'implémentation de l'API peut vérifier le jeton pour déterminer si le client est autorisé à accéder à l'API.
Apigee permet aux développeurs de générer des jetons d'accès et/ou d'actualisation en mettant en œuvre l'un des quatre types d'attributions OAuth2 : identifiants client, mot de passe, implicite et code d'autorisation - en utilisant la stratégie OAuthv2. De plus, les développeurs d'API peuvent utiliser Apigee pour implémenter des autorisations personnalisées, y compris des autorisations suivant le modèle d'échange de jetons, comme décrit dans la RFC 8693 de l'IETF. Les applications clientes utilisent ensuite 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.
Apigee peut éventuellement générer et renvoyer un jeton d'actualisation avec le jeton d'accès pour certains types d'attribution. Un client utilise un jeton d'actualisation pour obtenir un nouveau jeton d'accès une fois que le jeton d'accès d'origine a été révoqué ou a expiré. Le délai d'expiration du jeton 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 ou un jeton d'actualisation dans la stratégie OAuthv2 entraîne une plus grande fenêtre de vulnérabilité en cas de fuite de jeton, ce qui représente un risque de sécurité. Cela peut également entraîner une accumulation de jetons OAuth dans le magasin persistant, ce qui peut entraîner une baisse des performances au fil du temps.
Exemple 1
L'exemple de stratégie OAuthV2 suivant affiche un délai d'expiration long de 10 jours pour les jetons d'accès :
<OAuthV2 name="OAuth-GenerateAccessToken">
<Operation>GenerateAccessToken</Operation>
<ExpiresIn>864000000</ExpiresIn> <!-- 10 days -->
<RefreshTokenExpiresIn>864000000</RefreshTokenExpiresIn> <!-- 10 days -->
<SupportedGrantTypes>
<GrantType>authorization_code</GrantType>
</SupportedGrantTypes>
<GenerateResponse enabled="true"/>
</OAuthV2>Dans l'exemple ci-dessus :
- La durée de vie du jeton d'accès est définie sur 10 jours.
- La durée de vie du jeton d'actualisation est également définie sur 10 jours.
Impact
Les jetons d'accès de longue durée représentent un risque pour la sécurité. En cas de fuite ou de perte de jeton, un jeton à courte durée de vie expirera naturellement et deviendra inutile, tandis qu'un jeton à longue durée de vie continuera d'accorder l'accès à l'API pendant une période potentiellement longue, ce qui augmentera la fenêtre de vulnérabilité.
Un jeton d'accès doit avoir une courte durée de vie, probablement d'environ 30 minutes ou moins, et cette durée de vie doit être nettement inférieure à celle du jeton d'actualisation.
Exemple 2
L'exemple de stratégie OAuthV2 suivant affiche un délai d'expiration long de 200 jours pour les jetons d'actualisation :
<OAuthV2 name="OAuth-GenerateAccessToken">
<Operation>GenerateAccessToken</Operation>
<ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes -->
<RefreshTokenExpiresIn>17280000000</RefreshTokenExpiresIn> <!-- 200 days -->
<SupportedGrantTypes>
<GrantType>authorization_code</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 et court de 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.
- Les jetons d'actualisation expirent au bout de 200 jours. Ils s'accumulent dans le data store pendant toute leur durée de vie.
Impact
Une durée de vie prolongée du jeton d'actualisation peut potentiellement entraîner une dégradation des performances au fil du temps, car un grand nombre de jetons s'accumuleront dans le data store. Dans Apigee hybrid, une accumulation excessive de jetons peut également contribuer à l'épuisement de l'espace disque dans la couche de persistance.
Bonne pratique
Utilisez un délai d'expiration pour les jetons d'accès et d'actualisation OAuth qui correspond à vos exigences de sécurité spécifiques, afin de réduire la fenêtre de vulnérabilité pour les jetons divulgués et d'éviter l'accumulation de jetons dans le data store. Un bon point de départ pour la durée de vie du jeton d'accès est de 30 minutes, et pour la durée de vie du jeton d'actualisation, de 24 heures.
Définissez le délai d'expiration des jetons d'actualisation de sorte qu'ils soient valides pendant une durée correspondant à un multiple de la durée de vie des jetons d'accès. Par exemple, si vous définissez 30 minutes pour le jeton d'accès, définissez la durée de vie du jeton d'actualisation sur 24 heures ou 7 jours, ou toute autre durée adaptée à l'expérience utilisateur que vous devez prendre en charge.