dotnetopenauth领域协议异常

时间:2010-12-20 07:07:11

标签: exception dotnetopenauth

使用dotnetopenauth,我的代码在使用openId.CreateRequest(openIdIdentifier)时工作正常。返回URL是/default.aspx,我不想这样指定return_to param我必须填写领域。第二个参数的desc是

    //   realm:
    //     The shorest URL that describes this relying party web site's address.  For
    //     example, if your login page is found at https://www.example.com/login.aspx,
    //     your realm would typically be https://www.example.com/.

逻辑上正确的代码是

var request = openId.CreateRequest(openIdIdentifier, new Uri("http://localdev.com:8844/"), new Uri("http://localdev.com:8844/login"));

但是我得到了这个ProtocolException

  

openid.return_to参数   (http://localdev.com:8844/login?dnoa.userSuppliedIdentifier=http://myid.myopenid.com/)   与实际网址不匹配   (HTTP://localdev.com:8844 / Default.aspx的dnoa.userSuppliedIdentifier = HTTP://myid.myopenid.com/& openid.assoc_handle = ...)   请求是用。

WTF

如何在没有例外的情况下返回/登录?如果你能告诉我如何让它使用POST而不是GET

,你可以获得奖励积分

2 个答案:

答案 0 :(得分:1)

我假设您在浏览器上出现OpenID提供程序后出现此错误,并且在重定向回RP时,是吗?

您正在测试的提供商看起来正在将浏览器发送到错误的网址。但由于提供商不太可能无处制造“default.aspx”,我们需要查看日志以确切了解发生了什么。

你可以obtain logs locally by following these instructions。 或尝试使用此OpenID标识登录您自己的RP站点:http://test-id.org/RP/POSTAssertion.aspx这是一个诊断标识符,它将在http://test-id.org/TracePage.aspx生成日志消息。无论哪种方式收集它们,请将相关日志添加到您的问题中,以便我们更好地分析正在发生的事情。

答案 1 :(得分:0)

我今天遇到了类似的问题,尽管我使用的是纯MVC3。至少对于MVC,不需要使用CreateRequest()发送returnUrl,只需将returnUrl作为参数传递给您的登录处理程序,如下所示:

查看:

<form action="/Login/LogOn?returnUrl=@returnUrl" method="post">

控制器:

[ValidateInput(false)]
public ActionResult LogOn(string returnUrl)
{...}

有趣的是,当RelyingParty.GetResponse()不再为空时,即使在OpenID身份验证期间通过此方法第二次传递期间,returnUrl变量仍然可用。