una segura por parte net example español construyendo con basada autenticacion web-services rest api-design

web services - segura - Token caducado-API JSON REST-Código de error



json web token example (4)

Tengo una API REST de JSON. Hay un apretón de manos que le dará un token que es válido por 15 minutos. Todas las llamadas que haga dentro de esos 15 minutos deberían funcionar bien. Después de los 15 minutos, estoy devolviendo un objeto de error (incluye código, mensaje, éxito = falso) pero también me preguntaba qué código de error HTTP debería devolver. ¿Y usar un código de error HTTP desordenará a ciertos clientes? (HTML5, iPhone, Android). ¿Qué se considera la mejor práctica en este escenario?


Busqué la especificación OAuth 2 y todo lo que pude encontrar es que devuelven un "Error Token no válido" cuando caduca. No hay mención, que puedo encontrar, de qué código HTTP usan. Sin embargo, yo diría que su apuesta más segura es usar un 400.


FWIW Facebook usa 400 con una respuesta JSON personalizada. Personalmente preferiría 401 con respuesta JSON personalizada.

Aquí está el cuerpo de respuesta 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 } }


de acuerdo con la especificación rfc6750 - "El marco de autorización de OAuth 2.0: uso de token de portador", https://tools.ietf.org/html/rfc6750 , p.8, sección 3.1, el servidor de recursos debería devolver 401:>

invalid_token El token de acceso proporcionado ha caducado, revocado, malformado o no es válido por otros motivos. El recurso DEBERÍA responder con el código de estado HTTP 401 (no autorizado). El cliente PUEDE solicitar un nuevo token de acceso y volver a intentar la solicitud de recurso protegido.


Debe devolver un código de estado 401 Unauthorized . También puede proporcionar hypermedia para establecer el token de nuevo

Piensa en lo que sucede en una aplicación web. Vas a decir un sitio bancario. Si no es autenticado, lo enviará a la página de inicio de sesión. Luego inicias sesión y estás listo para ir por un tiempo. Luego expira y el ciclo se repite.

Solo un pensamiento.