2009-07-21 9 views
1

J'ai réussi à faire fonctionner toutes les pièces d'authentification, mais je suis confus quant à la configuration de l'enregistrement.ASP.NET, OpenID et enregistrement confusion

Par enregistrement, je veux dire que si l'OpenID n'est pas attaché à un compte existant, alors un nouveau compte doit être créé.

Devrais-je simplement retourner à une page d'enregistrement (avec des champs pour l'enregistrement) et rediriger vers une page différente si l'utilisateur est inscrit?

Existe-t-il un moyen de configurer un flux d'enregistrement propre et simple sans signer l'utilisateur en premier (formsauthentication.redirectfromloginpage) puis en vérifiant s'ils sont nouveaux sur chaque page?

Désolé, si cela est mal formulé, comme la plupart des autres choses que je demande, il est difficile à expliquer!

Merci

Répondre

2

Idéalement, aucune inscription est nécessaire au-delà de tout simplement un OpenID. Est-ce que votre site exige pour en savoir plus qu'un identifiant d'utilisateur pour fournir n'importe quelle fonctionnalité du tout?

Si votre site peut offrir des services aux utilisateurs (même simplement informatifs) sans demander plus que leur identifiant, fourni par OpenID, il ne possède aucune page d'inscription. C'est de loin le meilleur pour les utilisateurs et permettra de réduire la barrière d'accès aux nouveaux utilisateurs de votre site. Ensuite, lorsque l'utilisateur accède à une page qui offre quelque chose qui oblige l'utilisateur à donner plus d'informations sur eux-mêmes, collez-les avec une page d'inscription à ce moment-là.

Si vous devez afficher une page d'inscription pour tous les nouveaux utilisateurs, je vous suggère de vérifier chaque fois que quelqu'un se connecte avec son OpenID. Si vous reconnaissez l'identifiant OpenID réclamé lors de la connexion réussie, vous les laissez simplement passer ... sinon vous créez une entrée de base de données pour eux et les redirigez vers le formulaire d'inscription. Vous pouvez optimiser l'expérience en utilisant des extensions OpenID telles que Simple Registration ou Attribute Exchange afin que l'utilisateur puisse obtenir un formulaire d'inscription pré-rempli avec l'autorisation du fournisseur OpenID, ce qui simplifie davantage le processus d'enregistrement.

+0

En fait, quand j'y pense, aucune information personnelle n'est requise. Je pourrais toujours le faire sur Facebook (enfin, au Royaume-Uni au moins) et les laisser entrer un nom d'utilisateur volontairement plus tard. Merci. Oh, et en passant, votre blog m'a beaucoup aidé avec des choses liées à OpenID. Merci pour le bon travail! – j82374823749

+0

Une dernière chose, existe-t-il un moyen de «canoniser» l'OpenID que l'utilisateur a saisi avant de le rediriger vers le fournisseur. Par exemple un utilisateur peut entrer "abcd.myopenid.com" alors que le stocké de leur OpenID et celui retourné par le fournisseur est "http://abcd.myopenid.com/" – j82374823749

+0

Je suis vraiment content que vous ayez demandé cette normalisation question car beaucoup de gens ont tendance à se tromper, ce qui conduit à des failles de sécurité. Bien que vous puissiez «normaliser» ce que l'utilisateur a saisi, il ne fait AUCUN signe d'autorité et NE DOIT PAS être stocké. L'identificateur * only * que vous devez stocker et utiliser pour rechercher un compte d'utilisateur est l'identificateur revendiqué qui revient du fournisseur dans l'assertion positive. La spécification OpenID va plus en profondeur dans ceci, mais vous pouvez juste aller avec DotNetOpenAuth et laisser faire tout ce travail pour vous et simplement prendre l'identifiant ClaimedIdentifier de l'objet IAuthenticationResponse. –