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 une authentification basée sur des jetons OAuth 2.0 pour sécuriser vos API. OAuth2, décrit dans la norme 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 celles qui suivent 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 avec certains types d'autorisation. 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
Définir 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 période de vulnérabilité plus longue 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 présentent un risque de sécurité. En cas de fuite ou de perte de jeton, un jeton de courte durée expirera naturellement et deviendra inutilisable, tandis qu'un jeton de longue durée continuera d'accorder l'accès à l'API pendant une période potentiellement prolongée, ce qui augmentera la période de vulnérabilité.
La durée de vie d'un jeton d'accès doit être courte, probablement environ 30 minutes ou moins, et cette durée doit être nettement plus courte que 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 la durée de vie.
Impact
Une durée de vie prolongée du jeton d'actualisation peut entraîner une dégradation des performances au fil du temps, car un grand nombre de jetons s'accumulent 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 approprié pour les jetons d'accès et d'actualisation OAuth en fonction de vos exigences de sécurité spécifiques, afin de réduire la période de vulnérabilité des 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. Pour la durée de vie du jeton d'actualisation, commencez par 24 heures.
Définissez le délai d'expiration des jetons d'actualisation de sorte qu'ils soient valides pendant 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, 7 jours ou toute autre valeur appropriée pour l'expérience utilisateur que vous devez prendre en charge.