2017-10-03 4 views
3

J'ai des questions liées à clients non interactifs comme applications backend basées sur le flux oauth2.Quand demander un nouveau access_token pour les clients non interactifs dans le flux oauth2?

https://auth0.com/docs/api-auth/grant/client-credentials

Conformément à oauth2 pour les clients non interactifs, le flux est:

  • L'application authentifie avec Auth0 en utilisant son identifiant client et secret client.
  • Auth0 valide cette information et renvoie un access_token.
  • L'application peut utiliser access_token pour appeler l'API pour elle-même.

base sur ce point, mes questions sont les suivantes:

  • applications backend doivent stocker les access_token demander ou localement une nouvelle access_token pour le même client chaque fois que le client utilise l'application?
  • Si access_token est stocké localement, que se passe-t-il avec l'heure d'expiration?
  • Le paramètre Access_token pour les clients non interactifs devrait avoir le même délai d'expiration que le paramètre access_token pour les utilisateurs interactifs (connexion Web)?

Répondre

1

applications backend doivent stocker les access_token localement ou demander un nouveau access_token pour le même client chaque fois que le client utilise l'application ?

Pour les informations d'identification de client Accordez flux, la décision de renouveler fréquemment, ou « cache » un jeton retourné JWT L'accès dépendra de vos besoins - si champs par exemple changent fréquemment, il peut être judicieux de chercher un nouvel accès jeton fréquemment pour s'assurer que ces changements sont reflétés. D'après l'expérience personnelle, ce n'est généralement pas le cas, donc la mise en cache du jeton pendant la durée de son expiration est logique, et enregistre un appel supplémentaire à Auth0 pour récupérer un nouveau jeton avec chaque requête.

Si access_token est stocké localement, que s'est-il passé avec le délai d'expiration?

Vous pouvez choisir de vérifier l'expiration avant de faire une demande à chaque fois, et chercher un nouveau jeton d'accès si l'expiration est écoulé, ou bien tenter simplement d'utiliser le jeton d'accès sans vérifier, puis essayer de renouveler uniquement lorsque vous recevez un échec lors de l'utilisation du jeton existant.

access_token pour les clients non interactifs devraient avoir la même temps d'expiration par rapport à access_token pour les utilisateurs interactifs (connexion web)?

Question similaire à la première. Étant donné que l'utilisation du flux de délivrance des informations d'identification client indique généralement un client confidentiel/approuvé (vous stockez un secret client) - et fréquemment pour les scénarios machine à machine - il peut être judicieux d'utiliser un délai d'expiration plus long. Cependant, comme déjà mentionné, si les portées peuvent changer, etc., une courte expiration entraînerait des changements de configuration (portées) plus rapides.

+0

Merci @arcseldon. (1) Quand vous dites: "si les portées changent fréquemment", vous voulez dire les exigences du projet business & security ou les portées create-read-write de la réponse json (https://www.oauth.com/oauth2-servers/access-tokens/access-token-réponse /)? (2) Dans un environnement d'entreprise stable, les exigences des projets de sécurité ne doivent pas changer afin de ne pas affecter tous les clients d'application des points de terminaison de sécurité. Donc, en supposant une plate-forme de sécurité stable, un access_token avec un temps d'expiration élevé serait valide? Ou pour des raisons de sécurité, access_token devrait être renouvelé lorsqu'il expire (fréquemment)? Merci – JRichardsz

+0

Salut. Ici, je précise si vous avez des droits d'autorisation "fixes" - par exemple. vos étendues assignées à l'API sont quelque chose comme 'read: book write: book' alors une expiration plus longue est appropriée (toutes choses étant égales par ailleurs - par exemple un client de confiance, etc.). Toutefois, si vous savez que les droits d'autorisation sont susceptibles d'être modifiés et que vous souhaitez que votre client non interactif prenne en compte les nouvelles modifications, une expiration plus courte pourrait être plus appropriée, par exemple. vous ajoutez "delete book" comme portée et vous voulez que les clients non interactifs existants sélectionnent cette modification - depuis exp. est court ils renouvellent le jeton d'accès plus tôt. – arcseldon