Jetons et sessions d’OAuth dans REST

L’autre minute, j’ai lu un article sur OAuth. Il a décrit en particulier les jetons échangés entre le client et le fournisseur de services au cours d’une série de demandes.

L’article mentionne également que OAuth gagne en popularité dans les API RESTful en tant que couche d’autorisation. Comme je l’ai compris, REST devrait être complètement apasortingde.

La question: Est-ce que cela ne répète pas le principe du “être sans état” de la torpille REST? À mon humble avis, les jetons peuvent être considérés comme une sorte d’identifiant de session, n’est-ce pas?

Les jetons OAuth sont explicitement un identifiant de session, l’interaction n’est pas sans état entre les requêtes du protocole de négociation de jeton OAuth car les requêtes doivent être effectuées dans une séquence spécifique et nécessitent un stockage par client sur le serveur. ils ont été émis. Donc oui, OAuth viole les principes ssortingcts d’une architecture RESTful.

Malheureusement, il y a le Real World TM avec lequel nous devons faire des choses comme permettre aux applications de s’authentifier pour le compte de personnes sans demander leur mot de passe, ce que fait assez bien OAuth. Il serait impossible d’implémenter un schéma d’authentification sécurisé similaire sans ce type d’état. En effet, l’une des modifications requirejses par OAuth (1.0a) consistait à append plus d’ état au protocole de négociation de jeton pour atténuer un risque de sécurité.

Alors, est-ce que cela torpille le principe sans état de REST? Oui. Est-ce important? Pas si tu vis dans une tour d’ivoire 🙂

L’authentification est un état qui doit être suivi d’une manière ou d’une autre lors des interactions sur le Web. En fin de compte, si votre application est reposante ou non, le serveur doit être capable de suivre l’état authentifié de chaque utilisateur et cela nécessite malheureusement de contourner la nature sans état sous-jacente de HTTP et tout transport / technique supplémentaire (comme REST). il.

Par conséquent, pour développer toute sorte d’application authentifiée, un principe d’état doit être mis en place quelque part, et s’il s’agit de OAuth en plus de REST, c’est comme ça que ça doit être!