JavaScript REST Gestion des clients et des sessions

J'ai cherché une réponse à cette question, mais il semble que personne ne le fasse. Imaginez que vous concevez un client REST javascript et que vous souhaitez créer une page de connexion. Sûrement, après la connexion, vous serez authentifié.

Ainsi, les requêtes suivantes à l'API REST dépendent de votre identifiant utilisateur actuel, qui devrait être stocké du côté client suivant la manière RESTful.

Ma question est de savoir comment stocker cette information "session" à l'aide de Javascript. J'ai examiné les cookies, mais il me semble trop de texte sur lequel on peut faire confiance. En utilisant également les cookies, on peut y déposer un identifiant de session qui correspond aux informations de l'utilisateur sur le serveur, mais cela viole le concept sans état de REST.

Quelle meilleure approche pour résoudre ce problème?

Nous construisons également un type d'architecture similaire où l'API RESTful sera accessible par un client javascript.

Nous allons authentifier le client avec les informations d'identification du client et générer un jeton d'authentification et qui sera envoyé au client. Le client le stocke dans un cookie ou dans un magasin de données local. D'autres demandes à l'API de ce client seront envoyées en utilisant l'en-tête d'autorisation HTTP et incluant ce jeton dans l'en-tête. Nous autoriserons la demande à la fin de l'API pour le jeton donné et la demande sera diffusée une fois qu'elle sera authentifiée.

Jusqu'à n, à moins que vous n'accédez pas aux informations sur les cookies sur le côté du serveur, je ne pense pas que cela va violer le principe de REST sans état car nous ne maintenons aucun état du client sur le serveur (nous ne le lierons à aucun serveur). En ce qui concerne le processus d'authentification à l'aide d'un jeton, je ne pense pas que nous lions le serveur et le client ici, car nous avons plusieurs serveurs et nous utilisons un équilibreur de charge, et cette demande peut être envoyée par n'importe quel serveur (similaire à Google api).

Remarque: Nous faisons cela en utilisant le protocole HTTPS, de sorte que nous sommes sûrs que toute cette communication est sécurisée.