Comment identifier si le jeton OAuth a expiré?
Mon iOS l'application mobile consomme des services qui sont mis en œuvre avec la OAuth2.0 protocole. Le jeton d'accès OAuth vient avec un jeton d'actualisation et d'une expires_in
champ. J'ai sauvé le jeton d'actualisation et le jeton d'accès de l'expiration du temps dans mon application, mais n'ont pas une bonne idée sur la manière de les utiliser.
- Donc, qu'est-ce que l'habitude et les meilleures pratiques de l'utilisation de ce
expires_in
? - Comment puis-je identifier que mon jeton d'accès est expiré?
- Commun de service web format d'erreur qui me dit que mon jeton d'accès est expiré?
Vous devez vous connecter pour publier un commentaire.
Voici des informations sur le protocole OAuth 2.0 jeton d'actualisation.
Expire Dans La Définition
OAuth 2.0 de la norme, RFC 6749, définit la
expires_in
champ comme le nombre de secondes d'expiration:Jeton D'Actualisation De Gestion: Méthode 1
Lors de la réception valide
access_token
,expires_in
valeur,refresh_token
, etc., les clients peuvent traiter cela par le fait de garder un temps d'expiration et le vérifier sur chaque demande. Cela peut être fait en utilisant les étapes suivantes:expires_in
à une heure d'expiration (époque, RFC 3339/ISO-8601 datetime, etc.)access_token
a expiréUn exemple de mise en œuvre est la
oauth2
bibliothèque qui convertit convertit leexpires_in
de la valeur à un RFC 3339 date-heure dans le Jetonexpiration
de la propriété.expiry
n'est pas défini par le protocole OAuth 2.0 de la norme, mais elle est utile ici.Lors de la vérification du temps, être sûr que vous êtes le même temps, par exemple, en utilisant le même fuseau horaire par la conversion de tous les temps à l'époque ou le fuseau horaire UTC.
En plus de recevoir une nouvelle
access_token
, vous pouvez recevoir un nouveaurefresh_token
avec un temps d'expiration dans l'avenir. Si vous recevez ce, vous devez stocker le nouveaurefresh_token
pour prolonger la vie de votre session.Jeton D'Actualisation De Gestion: Méthode 2
Une autre méthode de manipulation du jeton d'actualisation est de rafraîchir manuellement après la réception d'une défaillance de jeton d'erreur. Cela peut être fait avec l'approche précédente ou par lui-même.
Si vous tentez d'utiliser l'expiration d'un
access_token
et vous obtenez une défaillance de jeton d'erreur, vous devez effectuer un jeton d'actualisation (si votre jeton d'actualisation est toujours valable). Depuis, différents services peuvent utiliser différents codes d'erreur de la date de péremption des jetons, vous pouvez soit suivre le code pour chaque service ou d'un moyen facile pour actualiser les jetons dans l'ensemble des services est de simplement essayer une simple actualisation, lorsqu'il rencontre une erreur 4xx.Invalide Jeton D'Accès Erreurs
Ci-dessous sont quelques-uns des codes d'erreur à partir des principaux services:
Actualiser Jeton D'Expiration
Si votre
refresh_token
a également expiré, vous aurez besoin de passer par le processus d'autorisation de nouveau.La OAuth 2.0 spec ne définit pas de rafraîchissement de jeton à l'expiration ou à la façon de le gérer, cependant, un certain nombre d'Api sera de retour d'une
refresh_token_expires_in
propriété lorsque l'actualisation jeton arrive à expiration. Les différentes Api va gérer l'actualisation jeton d'expiration différemment, il est donc important de passer en revue la documentation par l'API, mais en général, vous pouvez recevoir un nouveau jeton d'actualisation lorsque vous actualisez votre jeton d'accès. L'Expiration doit être gérées d'une façon similaire, comme la conversion derefresh_token_expires_in
à un RFC 3339 date-heurerefresh_token_expiry
valeur.Quelques exemples LinkedIn, eBay, et RingCentral. Dans l'API LinkedIn, lorsque vous actualisez les jetons d'accès, vous recevrez un jeton d'actualisation décroissant
refresh_token_expires_in
bien cibler l'origine d'actualisation jeton heure d'expiration jusqu'à ce que vous sont nécessaires pour auth de nouveau. Le RingCentral API sera de retour l'actualisation des jetons avec un temps statique de sorte que l'utilisateur n'a pas à auth si le nouveau jeton d'actualisation et d'actualisation jeton mises à jour sont faites régulièrement.refresh_token
n'est pas valide? :Orefresh_token_expires_in
bien et j'ai mis à jour la réponse à cette info.Serait recommandé d'utiliser la Méthode 2 ci-dessus depuis un 401 peut se produire pour plusieurs raisons telles que le renouvellement d'un certificat de signature de jeton ou d'une horloge différences:
J'ai mis en place beaucoup de succès OAuth clients et ont toujours utilisé cette technique et d'éviter jamais de lire le expires_in champ de mon côté client code