Iis 用经典ASP实现OpenID(DotNetOpenAuth)

Iis 用经典ASP实现OpenID(DotNetOpenAuth),iis,asp-classic,openid,dotnetopenauth,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新用户超链接限制:/) 我真的很

我花了无数个小时阅读了各地的文档,但在实现最新版本的DotNetOpenAuth(3.4.5.10202)中提供的经典ASP示例时仍然存在问题

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

我真的很难做到这一点,我花了大约8个小时在研究上(比如,用谷歌搜索直到手指流血,试图消化从OpenID到联邦登录的数千页文档),比我不得不花的时间还要多

如有任何建议或指示,将不胜感激


顺便说一句,我已经看到了,但是除了示例文件中的文本之外,没有太多关于经典ASP实现的文档。

您的思路是正确的。Google的OP标识符(您必须输入才能登录Google)是

  • realm
    是指向您主页的URL
  • thisPageUrl
    是用户登录提供商后提供商应将用户重定向回的URL
  • “requestUrl”是当前传入请求的完整URL,包括查询字符串。它可能带有OpenID响应
因此,您可能需要更改的唯一URL是
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")

这应该可以做到。如果不是,谷歌可能需要RP发现才能成功。无论如何,RP发现是一件很好的事情。做这件事的方法在。请注意,虽然我在写这篇文章时并没有考虑到经典ASP的受众,但您可能需要调整一些技巧。

这对我来说没有意义。使用经典的ASP示例代码,我之前已经输入了我的gmail凭据。读完后,我一时兴起,决定尝试一些愚蠢的事情,比如插入谷歌网址www.Google.com/accounts/o8/id。你知道什么。。。它将我引导到谷歌,询问我是否希望允许我的站点进行身份验证,然后用十几个查询字符串名称/值对将我重定向回调用页面。啊。进步。但感觉不太好,安德鲁,谢谢。我回复了GoogleGroups的帖子,但我想我会问这个。。。根据我收集的信息,我将无法在“clientresponse”中获得电子邮件地址。我知道他们(谷歌)没有实现openid框架的特定功能,但是否可以提供一些替代方法,以便我可以找到用户的电子邮件地址,在我的网站上为他们创建存根帐户?我在回答中添加了谷歌电子邮件解决方案。
-redirectUrl = dnoi.CreateRequestWithSimpleRegistration(Request.Form("openid_identifier"), realm, thisPageUrl, "nickname,email", "fullname")
+redirectUrl = dnoi.CreateRequestWithSimpleRegistration(Request.Form("openid_identifier"), realm, thisPageUrl, "", "email")