¿Las API RESTful todavía se consideran RESTful si dependen del estado de la sesión del navegador y las cookies?

Si mi entendimiento es correcto, entonces sí.

Las cookies son una invención para hacer posibles las operaciones de varios pasos a través de una conexión sin estado, a un servidor de aplicaciones sin estado.

Si la API fue tranquila antes, entonces las cookies no cambian eso.

Para que una API sea tranquila, necesita usar verbos HTTP, acceder a recursos, definitivamente por URL, y devolver respuestas HTTP, usando los tipos de medios apropiados para definir cómo deben interpretarse los datos.

Al menos, eso representa el nivel 2 en el Modelo de Madurez Richardson de REST

Pero noto que el ‘RESTO’ práctico no sigue las ideas de Roy Fielding muy de cerca.

Como resultado, mientras que REST académico es rigurosamente definido por Fielding, aquí en las trincheras tenemos una visión más relajada.

Si usa HTTP y una aplicación web para proporcionar un punto final, terminará llamándose RESTful independientemente de los detalles

Sí, de hecho, la llamada de descanso más utilizada es get, y se utiliza para devolver HTML conocido como páginas web.

El descanso es más un concepto que un conjunto de reglas estrictas. El jabón es un estándar más fuerte que el resto, que es uno de sus pros (y contras).

Sin embargo, no se recomienda usar cookies y claves de sesión, ya que esto lo limita a una sola instancia, lo que reduce su capacidad de escalar. Si su servicio comienza a crecer en demanda, el esfuerzo ahorrado al usar esto puede convertirse en una carga difícil de superar.

Existen soluciones a esta limitación de escala, por ejemplo, las variables de sesión se almacenan en bases de datos en AWS, por lo que cada servicio tendría acceso a las cookies y los parámetros de sesión, sin importar cuántas se ejecuten en paralelo.

Al final, debe decidir en última instancia qué tiene sentido para su proyecto, y como regla general, sugiero mirar al menos 5 años en el futuro, si no 10.

RESTful es solo un concepto más que un estándar. No hay una respuesta correcta para esto. Pero a mí tampoco me gusta la idea de usar session.

En nuestro último proyecto, elegimos la autenticación SSL mutua. La autenticación SSL mutua también conocida a veces como autenticación de cliente. La idea es simple: cuando el cliente se conecta al servidor e inicia una sesión SSL, también envía un certificado de cliente al servidor.

La autenticación del cliente no requiere que el certificado sea firmado por CA, por lo que puede generar su propio certificado de CA y usarlo para firmar un certificado de cliente. Luego copie el certificado del cliente al cliente, la CA autofirmada al servidor y cambie la configuración HTTP para habilitar la autenticación forzada del cliente y establecer la CA autofirmada.

En el certificado del cliente, puede configurar cualquiera en los campos que desee, por ejemplo, puede configurar el UUID de la cuenta. Y el CGI del lado del servidor puede obtener estos datos como variables de entorno. Estamos usando PHP y se colocarán en la variable global $ _SERVER.

El archivo del certificado también puede estar doblemente protegido por contraseña, si necesita asignarlo a un tercero.