J'ai essayé excessivement de mettre en œuvre une bonne solution d'identification ouverte dans asp.net mvc - et partout où je me tourne, il y a des morts absolues. DotNetOpenAuth est tout simplement trop gros et jusqu'à présent, je n'ai pas réussi à faire fonctionner même l'implémentation la plus simpliste, la plus basique et la plus sèche de celui-ci.

NerdDinner avait une implémentation prometteuse, mais il est impossible de retrouver tous les fichiers et scripts dépendants. Le site Web DotNetOpenAuth ne contient pratiquement aucune information utile non plus, malheureusement.

Quelqu'un connaît-il une approche simple pour simplement mettre en œuvre cela qui explique et détaille réellement comment cela fonctionne avec une sorte de sélecteur ? On en parle tellement, mais tout ce que je trouve pour cela est si difficile à travailler que cela dissuade toute mon équipe de même y penser.

Nous voulons l'implémenter de la même manière que le débordement de pile le fait déjà - en utilisant un sélecteur qui affichera une page de connexion si nécessaire. Je me rends compte qu'il y a beaucoup de code à faire pour cela, mais tout ne fait que saluer et louer dotnetopenauth, et rien ne l'enseigne vraiment. Même les exemples de projets ne s'ouvrent pas ou ne se compilent pas.

Cela ressemble à une merveilleuse bibliothèque - mais cela ne clique vraiment pas pour moi.

EDIT : C'est beaucoup plus logique maintenant qu'on m'a indiqué le bon endroit pour commencer. C'est beaucoup moins frustrant si vous éliminez tous les excès et savez exactement où se trouvent les bases.

17
Ciel 5 avril 2010 à 05:43

2 réponses

Meilleure réponse

Je suppose que vous avez probablement commencé avec les nouveaux modèles de projet DNOA qui contiennent BEAUCOUP de code et un schéma de base de données assez complexe, mais la plupart n'est nécessaire que pour les fournisseurs OAuth et OpenID, et non pour les parties de confiance. Cela peut être un peu écrasant lorsque vous essayez de comprendre comment l'intégrer dans une solution existante.

Je recommanderais de ne pas commencer avec le modèle de projet, mais avec l'exemple de projet que vous pouvez trouver dans le dossier Samples/OpenIdRelyingPartyMvc. Pour même minimiser cela, tout ce dont vous avez besoin pour un scénario très basique (qui serait par exemple juste de pouvoir afficher l'URL OpenID de l'utilisateur qui vient de se connecter) est dans la méthode Authenticate du UserController. C'est juste quelques lignes.

Dans mon cas, après avoir démarré très rapidement sur la base de cet exemple, j'ai approfondi un peu le code généré par le modèle de projet, appris et appliqué quelques améliorations utiles, mais toujours très légères et simples, et cela fonctionne très bien pour moi jusqu'à présent .

BTW : Je pense que DNOA est non seulement parfaitement conçu et le code bien documenté, mais c'est aussi l'une des bibliothèques open source les mieux prises en charge que j'ai jamais utilisées. Je parie qu'Andrew laissera un commentaire ici dans moins de 24 heures ;-)

5
realMarkusSchmidt 6 avril 2010 à 12:05
1
Je ne dis pas qu'il y a quelque chose de mal à propos de la bibliothèque, mais elle fait beaucoup d'hypothèses sur le développeur, étant donné qu'openid est destiné à être si largement propagé, il est très déroutant de s'y habituer.
 – 
Ciel
5 avril 2010 à 06:21
Aller avec cet échantillon a mieux fonctionné. Donc, mon objectif à partir de là est de le configurer avec un sélecteur - où recommanderiez-vous d'aller de cet échantillon à la configuration d'un sélecteur très simpliste ?
 – 
Ciel
5 avril 2010 à 06:33
Hrnm .. Je suis toujours vraiment perdu quant à la façon dont la page sait où envoyer l'utilisateur pour se connecter au fournisseur de son choix ...
 – 
Ciel
5 avril 2010 à 06:59
Le tout dernier téléchargement de DNOA contient déjà un sélecteur. J'ai fini par utiliser ce sélecteur : code.google.com/p/openid-realselector Vous devez juste vous assurer que le nom du champ de formulaire dans votre code côté serveur correspond au nom de la zone de texte utilisée dans le code javascript.
 – 
realMarkusSchmidt
5 avril 2010 à 11:05
1
Vous voyez, c'est là que je pense que DNOA devient un peu trop compliqué pour le codeur débutant. S'il avait été clairement indiqué que le sélecteur n'était qu'une écriture côté client pour embellir l'affichage, il aurait été tellement plus facile de s'y introduire. Cela dit, je suis très impressionné par DNOA maintenant que je peux faire fonctionner l'échantillon mvc. Je vous remercie beaucoup pour votre aide!
 – 
Ciel
5 avril 2010 à 16:37

Essaye ça. http://www.west-wind.com/Weblog/posts/899303. aspx.

Dotnetopenauth comprend un exemple d'application asp.net mvc qui montre comment cela fonctionne. Je l'ai évalué avant de passer à Spring mvc, mais j'ai pu développer un POC fonctionnel basé sur la logique de l'exemple de code. Si je me souviens bien, votre vue comprend une zone de texte qui soumet l'openid au contrôleur et le contrôleur utilise l'API dotnetopenauth pour vous rediriger vers le fournisseur d'identifiant ouvert pour l'authentification. La redirection inclut l'URL de votre site via la chaîne de requête afin que le fournisseur d'identifiants ouverts puisse vous rediriger une fois que vous vous êtes authentifié. Votre contrôleur utilisera à nouveau l'API dotnetopenauth lorsque l'utilisateur final sera redirigé vers votre site et que vous pourrez extraire l'identifiant ouvert. Je sais que cela explique seulement ce que vous savez peut-être déjà, mais comme je l'ai dit, je n'ai eu aucun problème à le faire fonctionner. poste ton code. J'ai codé dans une machine virtuelle et je ne peux plus y accéder mais je le télécharge à nouveau maintenant. cela ressemble à du bon matériel de blog.

3
Athens Holloway 5 avril 2010 à 06:13