web-dev-qa-db-fra.com

API RESTful avec des jetons de session .. hein?

Après avoir regardé beaucoup de débats de session/état en ce qui concerne REST et n'ayant rien trouvé de concret, je vais juste aller à la chasse et me poser la question.

En développant une API RESTful en tant que backend pour une application mobile, je (pense que je) veux garder une trace de tous les utilisateurs (même non enregistrés) avec invité sessions. Cela me permet de personnaliser le contenu et de faire des statistiques sur mes utilisateurs.

En ce qui concerne la mise en œuvre, je voudrais que mon application s'identifie, comme pour un point d'extrémité/authentifier, juste sans e-mail/mot de passe, plus comme UUID. Mais cela fait que toute mon API attend un "jeton de session" avec chaque demande.

Est-ce une mauvaise approche ou feriez-vous de même?

6
Zoon

L'approche habituelle consiste simplement à fournir un jeton de session au client via des en-têtes ou des cookies s'il n'a pas réussi à en fournir un ou s'il en a fourni un non valide. Cela est particulièrement nécessaire pour les clients Web où la session peut expirer pendant qu'ils se trouvent quelque part sur une page. Cela garantit que vous avez votre session immédiatement, sans aller au point de terminaison "authentifier", qui devrait faire ce que son nom suggère: Authentifier l'utilisateur.

Bien sûr, cela signifie que le client doit être conçu pour s'attendre à ce que le jeton de session change, mais c'est une chose bonne. La régénération du jeton de session, en particulier lors des changements de privilège (c'est-à-dire le passage de l'invité à l'utilisateur complet), aide à empêcher le détournement de session. Et ne pensez pas que, simplement parce que vous êtes une application mobile au lieu d'une page Web, vous êtes à l'abri du piratage. Vous ne l'êtes pas, un pirate peut utiliser Fiddler ou un autre proxy pour intercepter votre API mobile.

5
Kevin Fee