web-dev-qa-db-fra.com

L'authentification via Facebook / Google est-elle considérée comme une bonne pratique?

De nombreux services, sites et applications proposent l'option "connexion avec Facebook" ou "connexion avec Google". Pour de nombreux sites, le navigateur ouvre une fenêtre séparée dans laquelle vous pouvez saisir votre nom d'utilisateur et votre mot de passe. De cette façon, vous pouvez vérifier l'URL et vous convaincre que l'origine est vraiment Google/Facebook/peu importe. La connexion dans cette fenêtre doit être sécurisée, et il n'y a aucune raison de s'inquiéter (à part les problèmes de confidentialité que vous pourriez avoir).

Cependant, ce n'est pas toujours le cas. Bien que je ne puisse pas les trouver maintenant, je suis sûr que certains sites vous obligent à vous connecter avec votre compte Facebook/Google sur leur site (l'URL affichée n'est donc pas Facebook/Google). Je suis sûr qu'il existe des applications de bureau qui le font également. Un exemple que je peux donner est l'expérience GeForce de Nvidia. Mis à part le ridicule de devoir se connecter sur Google ou Facebook pour mettre à jour un pilote, cela ne semble pas être une bonne pratique, car je ne peux pas vérifier si je me connecte réellement sur Google ou que la fenêtre de connexion est usurpée.

Enter image description here

J'ai lu plusieurs fois que l'utilisation d'autres services pour se connecter est considérée comme une bonne pratique. Est-ce vrai? Je peux voir de sérieux problèmes avec cela.

51
Ruben

Je suis sûr que certains sites nécessitent que vous vous connectiez avec votre compte facebook/google sur leur site (donc l'URL affichée n'est pas facebook/google). Je suis sûr qu'il existe des applications de bureau qui le font également.

C'est une très mauvaise pratique pour les sites Web, car OAuth/OpenID (qui sont des protocoles utilisés pour déléguer l'authentification) est conçu pour contourner ce cas d'utilisation exact. Mais il n'y a pas d'autre moyen de le faire dans applications de bureau, car les applications de bureau n'ont pas de fonctionnalité de redirection.

Une page Web peut vous rediriger vers l'authentification google ou facebook, où vous pouvez saisir vos informations d'identification, puis lorsque vous vous authentifiez avec succès, Google/Facebook peut vous rediriger vers votre pays d'origine.

C'est impossible à faire dans une application de bureau. Pour contourner ce problème, l'application de bureau ouvre un navigateur Web dans lequel vous vous authentifiez auprès de votre fournisseur d'authentification (Google/Facebook), et une certaine magie se produisant en arrière-plan peut ensuite vous authentifier auprès de l'application de bureau. Mais dans l'ensemble, il s'agit d'un problème non résolu - vous devrez simplement faire confiance à l'application de bureau pour ne pas voler vos informations d'identification. En fait, l'ouverture d'un navigateur Web ne résout pas vraiment le problème non plus; maintenant, vous faites simplement confiance au navigateur pour ne pas voler vos informations d'identification (le navigateur est également une application de bureau!)

J'ai lu plusieurs fois que l'utilisation d'autres services pour se connecter est considérée comme une bonne pratique. Est-ce vrai?

C'est considéré comme une bonne pratique car

  1. Il est convivial - les utilisateurs n'ont pas à se souvenir d'une centaine d'informations d'identification différentes

  2. Dans l'ensemble, il offre une meilleure sécurité - vous n'avez pas à faire confiance à une centaine d'implémentations différentes et espérez que chaque site est exempt de bogues et stocke votre mot de passe en toute sécurité - il vous suffit de faire confiance à Google ou Facebook pour assurer la sécurité. Et ils sont beaucoup plus capables de le faire que votre neveu adolescent qui a écrit un autre système de connexion pour son nouveau site.

Bien sûr, cela signifie également que vous mettez maintenant tous vos œufs dans le même panier. Si quelqu'un viole votre compte Google/Facebook, vous avez beaucoup plus de mal à utiliser ce compte pour vous authentifier sur une centaine d'autres sites. En outre, il est difficile de faire savoir à votre fournisseur d'authentification quels sites vous visitez et à quelle fréquence vous vous connectez.

34
Out of Band

La première partie est principalement une réponse partielle au cas d'application de bureau. L'installation d'une application de bureau n'est pas la même chose que la navigation sur un site distant. Dans ce dernier, vous faites confiance à votre navigateur pour vous protéger (autant que possible) contre d'éventuelles attaques. Dans le premier cas, vous devez faire confiance à l'application pour ne pas contenir de logiciels malveillants. Je fais peu de différence entre faire confiance à chrome pour ne pas envoyer toutes mes informations personnelles à Google, et faire confiance à une application NVidia pour ne pas voler votre mot de passe Google.

La seule vraie différence est que vous ajoutez un nouveau lieu d'attaque possible sur votre mot de passe Google unique. Si cela vous inquiète, créez simplement un compte auxiliaire que vous n'utilisez pas pour les accès sensibles et utilisez-le pour NVidia et/ou d'autres applications de bureau.

Cela étant dit, c'est définitivement une mauvaise pratique pour un site ou même une application de bureau de se mettre en route et de prendre à tout moment la responsabilité de passer votre mot de passe à un service d'authentification externe. Des protocoles tels que OAuth ou CAS ont été spécifiquement conçus pour permettre à un site ou à une application de déléguer l'authentification à un service tiers et ne voyez jamais le mot de passe. Le client fait confiance à la service d'authentification pour protéger ses informations d'identification, le service d'application fait confiance au service d'authentification pour identifier le client en toute sécurité. Arrêt complet. Devant faire confiance au service d'application pour ne pas voler les informations d'identification est à mon humble avis une erreur de conception.

Pour le cas d'utilisation du bureau, la bonne façon est de vous permettre de télécharger en toute sécurité la mise à jour via votre navigateur - vous prendre la responsabilité de cette partie - puis l'application prend le fichier téléchargé pour effectuer ses mises à jour. De cette façon, si quelque chose ne va pas (par exemple, vous avez téléchargé un fichier compromis à partir d'un site pirate) vous en êtes responsable. Mais une application. les développeurs ne savent pas toujours qui devrait être responsable de quoi ...

6
Serge Ballesta

À mon avis, ce n'est pas une bonne pratique. Certaines questions ne peuvent être ignorées:

  • Google et Facebook explorent déjà notre vie privée, vendant nos informations personnelles à des sociétés tierces et des annonceurs. C'est juste plus de nourriture pour le poisson. C'est pourquoi ils fournissent ce service.
  • Comme @Pascal le dit, tous les œufs dans le même panier, en faisant confiance à un tiers. Pas tout à fait une bonne option de nos jours.
  • Vous pouvez vous développer un serveur Oauth, sans avoir besoin d'utiliser Facebook ou Google. De cette façon, vous pouvez être sûr de ce qui se passe avec vos données.
3
rew1nd

Je crois que c'était this vidéo où ils discutent exactement de cela.

Résumer:

"Si vous avez la possibilité de ne pas stocker le mot de passe et de ne pas le traiter, mais plutôt que quelqu'un d'autre (de préférence plus grand) le fasse pour vous, choisissez toujours cette option. Ce sera un problème potentiel de moins à vous soucier."

2
Иво Недев