使用经典ASP实现OpenID(DotNetOpenAuth)

时间:2010-09-03 14:49:50

标签: iis asp-classic openid dotnetopenauth

我花了无数个小时阅读整个文档,我仍然遇到了实施最新版DotNetOpenAuth(3.4.5.10202)中提供的经典ASP样本的问题。

具体来说,我不确定我需要在login.asp中更改哪些值才能查看它是否有效/对我有用。对于以下代码,如果我想将Google用作OpenID提供商,是否可以将requestURL更改为www.google.com/accounts/o8/id或www.google.com/accounts/o8/ud? (stackoverflow新用户超链接限制:/)

`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")`

我真的很难用这个,并花了大约8个小时的研究(即谷歌搜索,直到我的手指流血,并试图消化从OpenID到联合登录的所有文件的数千页文档)比我不得不花。

非常感谢任何建议或指示。

BTW,我见过this post,但在示例文件的文本之外没有很多关于经典ASP实现的文档。

1 个答案:

答案 0 :(得分:0)

你走在正确的轨道上。 Google的OP标识符(您必须输入以进行Google登录)是https://www.google.com/accounts/o8/id

  • realm是您主页的网址
  • thisPageUrl是提供商在用户登录提供商后应将用户重定向回的网址。
  • 'requestUrl'是当前传入请求的完整URL,包括查询字符串。它可能带有OpenID响应。

因此,您可能需要更改的唯一网址是realm变量。

既然你说你已经从查询字符串中获得了一些回复,那么处理该响应的代码应该会启动。你可能想要自定义实际的登录代码(设置的部分)会话变量)到您网站需要的任何内容。

DotNetOpenAuth v3.4.5中的经典ASP COM服务器实际上可以让您获得Google用户的电子邮件地址。您需要稍微修改一下样本:

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

这应该这样做。如果没有,可能是Google要求RP发现成功。 RP Discovery无论如何都是一件好事。这样做的指示是http://blog.nerdbank.net/2008/06/why-yahoo-says-your-openid-site.html。请注意,虽然经典ASP不是我在撰写帖子时想到的观众,但您可能需要稍微调整一些技巧。