2010-09-03 5 views
3

J'ai passé d'innombrables heures à lire la documentation partout et j'ai toujours un problème avec l'implémentation des exemples Classic ASP fournis dans la dernière version de DotNetOpenAuth (3.4.5.10202). En particulier, je ne suis pas sûr des valeurs que j'ai besoin de changer dans le fichier login.asp pour voir si cela fonctionne ou fonctionnera pour moi. Pour le code ci-dessous, si je souhaite utiliser Google en tant que fournisseur OpenID, dois-je remplacer requestURL par www.google.com/accounts/o8/id ou www.google.com/accounts/o8/ud? (Stackoverflow nouvelle limite de lien hypertexte utilisateur: /)Implémentation d'OpenID (DotNetOpenAuth) avec ASP classique

`realm = "http://" + Request.ServerVariables("HTTP_HOST") + "/classicaspdnoi/" 
thisPageUrl = "http://" + Request.ServerVariables("HTTP_HOST") + Request.ServerVariables("URL") 
requestUrl = "http://" + Request.ServerVariables("HTTP_HOST") + Request.ServerVariables("HTTP_URL")` 

Je suis vraiment un moment difficile avec cela et ai passé environ 8 heures de plus dans la recherche (c.-à-googler jusqu'à ce que mes doigts saignent et en essayant de digérer des milliers de pages de documentation sur tout d'OpenID à Federated login) que je devais dépenser.

Un conseil ou une direction serait grandement appréciée.

BTW, j'ai vu this post, mais il n'y a pas beaucoup de documentation pour l'implémentation ASP classique en dehors du texte dans les fichiers d'exemple.

+0

Cela n'a aucun sens pour moi. En utilisant l'exemple de code ASP classique, j'ai précédemment entré mes informations d'identification Gmail. Sur un coup de tête après avoir lu [ce post] (http://stackoverflow.com/questions/1588502/no-openid-endpoint-found-net-openid), j'ai décidé d'essayer quelque chose de stupide comme l'insertion de l'URL de Google www.google. com/accounts/o8/id. Qu'est-ce que tu sais ... ça m'a amené à demander à google si je voulais autoriser mon site à s'authentifier, puis à me rediriger vers la page d'appel avec une douzaine de paires nom/valeur querystring. Ugggh. Le progrès. Mais ça ne me semble pas. – Brian

Répondre

0

Vous êtes sur la bonne voie. OP Identifiant de Google (qui est ce que vous devez entrer pour faire un login Google) est https://www.google.com/accounts/o8/id

  • realm est l'URL de votre page d'accueil
  • thisPageUrl est l'URL que le fournisseur doit rediriger l'utilisateur vers après la l'utilisateur se connecte au fournisseur. 'RequestUrl' est l'URL complète de la requête entrante en cours, y compris la chaîne de requête. Il peut être porteur d'une réponse OpenID.

La seule URL que vous devez probablement modifier est la variable realm. Puisque vous dites que vous recevez déjà une réponse de Google avec un tas de choses dans la chaîne de requête, le code qui traite cette réponse devrait entrer en jeu. Vous pouvez personnaliser le code de connexion actuel (la partie qui définit les variables de session) à tout ce dont votre site a besoin.

Le serveur ASP COM classique de DotNetOpenAuth v3.4.5 vous permet en réalité d'obtenir l'adresse e-mail d'un utilisateur Google. Vous avez besoin de modifier légèrement l'échantillon:

-redirectUrl = dnoi.CreateRequestWithSimpleRegistration(Request.Form("openid_identifier"), realm, thisPageUrl, "nickname,email", "fullname") 
+redirectUrl = dnoi.CreateRequestWithSimpleRegistration(Request.Form("openid_identifier"), realm, thisPageUrl, "", "email") 

Cela devrait le faire. Si ce n'est pas le cas, il se peut que Google exige la découverte de RP pour réussir. RP Discovery est une bonne chose à faire du travail quand même. Les directions pour le faire sont au http://blog.nerdbank.net/2008/06/why-yahoo-says-your-openid-site.html. Notez cependant que l'ASP classique n'était pas l'audience que j'avais en tête lors de l'écriture du post, donc vous devrez peut-être adapter quelques techniques.

+0

Andrew, merci. J'ai répondu à la discussion Google Groupes, mais j'ai aussi pensé que je demanderais ça ...De ce que j'ai réussi à rassembler, je ne serai pas en mesure d'obtenir une adresse e-mail dans la "clientresponse". Je comprends qu'ils (Google) n'implémentent pas une caractéristique particulière du framework openid, mais est-ce qu'une autre méthode pourrait être fournie afin que je puisse trouver l'adresse email de l'utilisateur pour créer un compte stub pour eux sur mon site? – Brian

+0

J'ai ajouté à ma réponse pour inclure la solution de messagerie Google. –