Question

Je viens de (re)lecture Rob Conery 2010 post de blog OpenID est un Cauchemar dans le cadre de certains travaux de recherche en OpenID/OpenAuth.Idéalement, je suis à la recherche pour l'utilisation de plusieurs OAuth les fournisseurs liés à un compte unique, afin de fournir la résilience contre les fournisseurs d'indisponibilité, - connectez-vous avec Facebook, le lien de votre compte Twitter et d'un compte Google, et si la prochaine fois que vous visitez Facebook login ne fonctionne pas-il n'a pas d'importance, vous pouvez utiliser Twitter OU Google pour obtenir et accéder à vos données tout comme, dans le monde réel, vous pouvez ouvrir un compte en banque avec un passeport, et de retirer de l'argent plus tard à l'aide de votre permis de conduire si votre passeport n'est pas disponible.

L'un de Rob principales préoccupations dans son article, c'est qu'il n'y a aucun moyen d'identifier un utilisateur qui utilise OpenID - quelqu'un peut se connecter avec Google un jour, d'acheter un produit, puis de revenir et de se connecter avec Google quelques jours plus tard et d'être incapable d'accéder au produit qu'ils ont acheté, car il n'y a pas d'identificateur unique qui est garanti de rester cohérent entre les deux Google authentification des appels.

Je suis curieux de savoir si cette question a été traitée dans le protocole OAuth 2.0, soit de manière explicite via le protocole spec, ou par le biais de certains de la mise en œuvre de consensus parmi les principaux fournisseurs.Champ - le cas échéant - puis-je compter sur de ne pas changer pendant la durée de vie de la relation de l'utilisateur avec un particulier OAuth fournisseur?

Était-ce utile?

La solution

Dans le cadre de leur OAuth2 pour la connexion processus, Google de fournir un TokenInfo extrémité qui est utilisé pour valider et de fournir des informations sur la access_token c'est obtenue plus tôt dans le processus.

Le jeton de l'information comprend userid:

"La valeur de ce champ est immuable identifiant de l'utilisateur connecté, et peut être utilisé lors de la création et de la gestion des sessions utilisateur dans votre application.Cet identifiant est le même quel que soit le client_id.Cela vous offre la possibilité de corréler les informations de profil dans de multiples applications dans la même organisation."

ce qui sonne comme juste le billet (ou peut-être un jeton)!

userid n'est présent que si l' https://www.googleapis.com/auth/userinfo.profile champ d'application a été inclus dans le jeton d'accès de la demande, afin de ne pas l'oublier.

De même, dans le Facebook API vous avez accès à l'API graphique une fois que vous avez obtenu un jeton d'accès où vous pouvez obtenir les données de l'utilisateur, y compris l'ID.

Twitter inclure la user_id dans le jeton d'accès de réponse dans le cadre de leur l'authentification API


Si vous êtes en utilisant OAuth dans un .Un projet de réseau cela peut être utile...J'ai découvert aujourd'hui que WebMatrix 2 Beta comprend OAuth2 clients pour Facebook, Twitter, Windows Live, Google et Yahoo, et peut être utilisé à partir d'un projet MVC.Je me suis dit que vous avez juste besoin de la WebMatrix.Security.dll et vous êtes bon pour aller.Il est installé dans C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v2.0\Assemblies.Même si il est en version bêta et caché, c'est une bonne façon de commencer et pourrait faire l'apprentissage de la courbe avec l' DotNetOpenAuth la bibliothèque est un peu moins raide.

Autres conseils

oauth 2.0 ne résout pas cela - ce n'est pas un protocole d'identité / SSO.

Cependant, OpenID Connect (construit sur OAuth 2.0) est.Vous pouvez avoir de la chance et récupérer l'adresse e-mail de l'utilisateur via OpenID Connect (Voir ici - selon les champs), ou vous pouvez récupérer les PPID qui devrait être unique à une partie de repos informée .De toute façon - cela devrait être possible.

Alternativement, SAML pourrait être utilisé.Il prend en charge de nombreuses saveurs différentes d'identificateurs d'utilisateurs qui conviendront.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top