sessions sessioncreationpolicy sec multiple management example create and session rest oauth stateless

sessioncreationpolicy - spring session management



Fichas y sesiones de OAuth en REST (2)

El otro minuto leí un artículo sobre OAuth. Describió especialmente los tokens intercambiados entre el cliente y el proveedor de servicios durante una serie de solicitudes.

El artículo también menciona que OAuth gana una gran popularidad en las API RESTful como capa de autorización. Según entendí, REST debería mantenerse completamente sin estado.

La pregunta: ¿No repite este token repetido el principio de "ser apátrida" de un torpedo REST? En mi humilde opinión, los tokens se pueden ver como un tipo de identificación de sesión, ¿o no?


La autenticación es un estado que debe rastrearse de alguna manera cuando se trata de interacciones web. En última instancia, si su aplicación es tranquila o no, el servidor debe poder rastrear el estado autenticado de cada usuario y, lamentablemente, eso requiere algún tipo de elusión de la naturaleza subyacente sin estado de HTTP y cualquier transporte / técnica adicional (como REST) ​​sobre eso.

Por lo tanto, para desarrollar cualquier tipo de aplicación autenticada, un principio de estado debe ser de cuerno de zapato en algún lugar, y si eso resulta ser OAuth encima de REST, ¡así es como debe ser!


Los tokens de OAuth son explícitamente un identificador de sesión, la interacción no es sin estado entre las solicitudes en el protocolo de negociación de tokens de OAuth ya que las solicitudes se deben realizar en una secuencia específica y requieren almacenamiento por cliente en el servidor, ya que necesita rastrear cosas como cuándo fueron emitidos. Entonces sí, OAuth viola los estrictos principios de una arquitectura REST.

Desafortunadamente, existe el mundo real TM para lidiar con los puntos en los que tenemos que hacer cosas como permitir que las aplicaciones se autentiquen en nombre de personas sin solicitar su contraseña, lo que OAuth hace bastante bien. Sería imposible implementar un esquema de autenticación segura similar sin este tipo de estado. De hecho, uno de los cambios requeridos por OAuth (1.0a) fue agregar más estado al protocolo de negociación de tokens para mitigar un riesgo de seguridad.

Entonces, ¿torpedece el principio sin estado de REST? Sí. ¿Eso importa? No, a menos que vivas en una torre de marfil :-)