web-services - sécuriser - json web token example



Token Expired-API REST JSON-Code d'erreur (3)

FWIW Facebook utilise 400 avec une réponse JSON personnalisée. Personnellement, je préférerais 401 avec une réponse JSON personnalisée.

Voici le corps de la réponse de FB:

{
  "error": {
    "message": "Error validating access token: Session has expired on Jul 17, 2014 9:00am. The current time is Jul 17, 2014 9:07am.",
    "type": "OAuthException",
    "code": 190,
    "error_subcode": 463
  }
}

J'ai une API REST JSON. Il y a une poignée de main qui vous donnera un jeton valide pendant 15 minutes. Tous les appels que vous faites dans ces 15 minutes devraient fonctionner correctement. Après les 15 minutes je retourne un objet d'erreur (inclut le code, le message, le succès = faux) mais je me demandais aussi quel code d'erreur HTTP je devrais retourner? Et va utiliser un code d'erreur HTTP gâcher certains clients? (HTML5, iPhone, Android). Quelle est la meilleure pratique dans ce scénario?


Answer #1

J'ai recherché la spécification OAuth 2 et tout ce que j'ai pu trouver c'est qu'ils retournent une "erreur de jeton invalide" quand elle expire. Il n'y a aucune mention, que je peux trouver, du code HTTP qu'ils utilisent. Cependant, je dirais que votre pari le plus sûr est juste d'utiliser un 400.


Answer #2

Vous devez renvoyer un code d'état 401 Unauthorized . Vous pouvez également fournir hypermédia pour rétablir le jeton

Pensez à ce qui se passe dans une application Web. Vous allez dire un site bancaire. Si non autorisé, il vous enverra à la page de connexion. Ensuite, vous vous connectez et vous êtes bon pour aller un moment. Puis il expire et le cycle se répète.

Juste une pensée.





api-design