исключение протокола области dotnetopenauth - PullRequest
1 голос
/ 20 декабря 2010

Используя dotnetopenauth, мой код работал нормально при использовании openId.CreateRequest(openIdIdentifier).URL-адрес возврата был /default.aspx, который я не хотел, чтобы указать параметр return_to, который я должен был заполнить в области.Описание второго параметра:

    //   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/) не соответствует фактическому URL-адресу (http://localdev.com:8844/Default.aspx?dnoa.userSuppliedIdentifier=http://myid.myopenid.com/&openid.assoc_handle=...) запрос был сделан с помощью.

WTF

Как мне вернуться / войти без исключения? И бонусные баллыесли вы можете сказать мне, как заставить его использовать POST вместо GET

Ответы [ 2 ]

1 голос
/ 20 декабря 2010

Я предполагаю, что вы получаете эту ошибку после того, как поставщик OpenID появляется в браузере, и во время перенаправления обратно на RP это верно?

Похоже, что провайдер, с которым вы тестируете, отправляетбраузер на неправильный URL.Но так как для провайдера очень маловероятно, что он производит «default.aspx» из ниоткуда, нам нужно посмотреть журналы, чтобы точно узнать, что происходит.

Вы можете получать журналы локально, выполнивэти инструкции .или пытаясь войти на свой собственный сайт RP с этим идентификатором OpenID: http://test -id.org / RP / POSTAssertion.aspx Это диагностический идентификатор, который будет выдавать сообщения журнала в http://test -id.org / TracePage.aspx .В любом случае, собирайте их, пожалуйста, добавьте соответствующие журналы к вашему вопросу, чтобы мы могли лучше проанализировать, что происходит.

0 голосов
/ 18 мая 2011

У меня была похожая проблема сегодня, хотя я использую чистый MVC3. По крайней мере, для MVC нет необходимости отправлять returnUrl с CreateRequest(), кажется, достаточно просто передать returnUrl в качестве параметра при отправке формы в ваш обработчик входа, что-то вроде этого:

Вид:

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

Контроллер:

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

Интересно, что тогда переменная returnUrl все еще доступна, даже во время второго прохода через этот метод во время аутентификации OpenID, когда RelyingParty.GetResponse() больше не является нулевым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...