【问题标题】:No OpenID request was recognized in OpenIdProvider.GetRequest在 OpenIdProvider.GetRequest 中未识别出任何 OpenID 请求
【发布时间】:2011-08-04 22:56:23
【问题描述】:

我正在尝试使用 DotNetOpenAuth 实现 OpenId 提供程序。我正在一起使用他们的 2 个示例,一个 MVC 回复方和一个 MVC 提供者。

提供者托管在:http://localhost:4864/OpenId/Provider

依赖托管:http://localhost:54347/User/Login

我用谷歌 (https://www.google.com/accounts/o8/id) 尝试过,我通过了身份验证。当我尝试http://localhost:4864/OpenId/Provider。依赖方表示未找到 openId 端点。当我在提供程序上设置断点时,此代码返回 null:

IRequest request = OpenIdProvider.GetRequest()

所以当请求为空时的注释是这样的:No OpenID request was recognized. This may be a user that stumbled on the OP Endpoint.

所以我想我的问题出在提供商端。我需要做什么来解决这个问题?

【问题讨论】:

    标签: asp.net-mvc openid dotnetopenauth


    【解决方案1】:

    在 dotnetopenauth 示例中,当登录屏幕询问提供程序并且您想使用示例 mvc 提供程序时,在您的情况下使用的标识符将是 http://localhost:4864/

    而不是http://localhost:4864/OpenId/Provider

    【讨论】:

      【解决方案2】:

      对我来说,我使用的是示例 MVC 提供程序。它的 HomeController 具有 [Authorize] 属性。这意味着 xrds 请求失败,因此报告了异常“序列不包含元素”和“未找到 OpenID 端点”。删除 [Authorize] 属性允许 xrds 请求成功,并且您可以使用在 Visual Studio 的另一个实例中调试的站点中的 OpenID 登录到在 Visual Studio 的一个实例中调试的站点。

      【讨论】:

        【解决方案3】:

        出于安全原因,DotNetOpenAuth RP 默认禁止以http://localhost/ 开头的 OpenID。为了您的测试目的,您可以将 localhost 列入白名单,以便它适合您:

        <dotNetOpenAuth>
            <messaging>
                <untrustedWebRequest>
                    <whitelistHosts>
                        <!-- since this is a sample, and will often be used with localhost -->
                        <add name="localhost" />
                    </whitelistHosts>
                </untrustedWebRequest>
            </messaging>
        </dotNetOpenAuth>
        

        【讨论】:

        • 我什至将提供程序附加到我的本地 iis,其 url 为:http://localhost/openidprovider/openid/provider,在调试时,它说没有找到打开 id 请求。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-17
        • 2010-11-02
        • 2023-03-11
        • 1970-01-01
        相关资源
        最近更新 更多