0

我正在研究这个 DotNetOpenAuth 教程的简单实现。

在 Chrome、Firefox 和 IE 等常规浏览器上运行良好。但是当我从 PhoneGap childBrowser 插件调用这个“google_login.aspx”页面时它失败了。

在用户将其凭据输入 Google400 -Bad Request - Invalid URL ,失败以 a 的形式发生。

当 Google 尝试重定向回我的网站时,Google 尝试使用如下所示的错误网址:

https://myurl.com/(F(8g0QkKd61D6yBbN2pkuZwAXOTGChqwruytA0LCC_nZko2mXgddbDhT3nXCj3XWVwOSkyfNGENHtctVXbnAyFQcj344Cai3rrkKKO_SNM_laGIqIPN2pkSBJQQYc98T0qv_gZbm3R8Qufry7u-HLAAT_RfVpMtpbCM6sw-FLPuxxHUETRHjd8lA9DR7LKIfkMYYinZU_qLduO02f012wZ2feVi8XW479WOvrWCr_rHFAxPNEQFurrJO1rxGs1LUFzTZ4pNlgpm4LwHrv7lTtK5-adDKbQJXzFrjEAG22pNxGfKpesHNsV-m88zp20w70FtF56wppLfzadNgq7cPDlb3hIwbsA-JGI1he8low8_KWDNZev5RqtX8cPtQKpFIL0))/Default.aspx

而不是这个:

https://myurl.com/Default.aspx

这只发生在PhoneGap childBrowser 插件上,其他浏览器会将我带到正确的位置。

收到400 bad request错误后,我可以手动浏览到我的主页,它表明我实际上已登录,并且从谷歌返回的简单重定向是失败的

任何人都知道如何解决我的问题或可能的解决方法?

解决方案:

我必须在中指定returnToURL参数OpenIdRelyingParty.CreateRequest在此处输入图像描述

4

2 回答 2

1

这看起来可能是 ASP.NET 的无 cookie 会话支持功能。如果您的失败场景是会话 cookie 被拒绝,并且如果在 web.config 文件中启用,我相信 ASP.NET 本质上会将 cookie 存储在您的 URL 中,从而创建一种虚拟路径。显然,这有什么问题。我建议您通过以下方式隔离问题:

  1. 打开 DotNetOpenAuth 日志记录
  2. 收集整个登录尝试的Fiddler2跟踪

...找出这条杂散路径的来源。

于 2012-06-08T14:46:45.887 回答
1

要解决这个问题:

  1. App_Browsers如果 ASP.NET 文件夹尚不存在,请将其添加到您的项目中(右键单击项目,单击添加 -> 添加 ASP.NET 文件夹 -> App.Browsers
  2. 添加一个名为generic.browserApp.Browsers 文件夹的文件
  3. 将 generic.browser 文件中任何自动生成的代码替换为:

    <browsers>
        <browser refID="Default">
            <capabilities>
                <capability name="cookies" value="true" />
            </capabilities>
        </browser>
    </browsers>
    

运行 Forms Authentication 时,该问题在 iOS 设备(例如 iPad 和 iOS)上以合理的频率出现。用户将收到错误:错误的请求 - 无效的 URL。HTTP 错误 400。请求 URL 无效。

于 2012-08-04T07:38:57.277 回答