2010-12-20 6 views
1

openId.CreateRequest(openIdIdentifier)을 사용할 때 dotnetopenauth를 사용하면 코드가 제대로 작동합니다. return url은 /default.aspx였습니다. return_to 매개 변수를 지정하기를 원하지 않았습니다. 영역을 채워야했습니다. // localdev : 2 PARAM의 내림차순 내가이 ProtocolException 사용을 얻을 그러나 그래서 논리적으로 정확한 코드가dotnetopenauth 영역 프로토콜 예외

된 openid.return_to 매개 변수 (HTTP

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

입니다

// 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/. 

입니다 .com : 8844/로그인? dnoa.userSuppliedIdentifier = http : //myid.myopenid.com/) 은 실제 URL과 일치하지 않습니다. (http://localdev.com:8844/Default.aspx?dnoa.u serSuppliedIdentifier = http : //myid.myopenid.com/ & openid.assoc_handle = ...) 으로 요청되었습니다.

어떻게 내가 예외없이/로그인에 반환 할 WTF? 그리고 보너스 포인트가 있다면 GET 대신 POST를 사용하는 방법을 말해 줄 수 있습니다

+0

아마 조금 늦었지 만 /default.aspx가 기본 샘플 코드에서 호출 된 것처럼 보입니다. case response.Status == "FormsAuthentication.RedirectFromLoginPage"를 인증했습니다. – mikalai

답변

1

OpenID Provider가 브라우저에 나타나고 RP로 리디렉션되는 동안이 오류가 발생한다고 가정합니다.

테스트중인 제공 업체가 브라우저를 잘못된 URL로 보내는 것처럼 보입니다. 그러나 Provider가 "default.aspx"를 아무데도 제조하지는 않을 것이므로, 무슨 일이 일어나는지 정확하게 알아 내기 위해 로그를 조사해야합니다.

obtain logs locally by following these instructions 수 있습니다. 또는이 OpenID 식별자를 사용하여 자신의 RP 사이트에 로그인하려고 시도합니다. http://test-id.org/RP/POSTAssertion.aspx이 메시지는 http://test-id.org/TracePage.aspx에 로그 메시지를 생성하는 진단 식별자입니다. 어느 쪽이든 수집하는 경우 관련 로그를 질문에 추가하여 상황을 더 잘 분석 할 수 있도록하십시오.

+0

뭔가 잘못 읽은 것 같아요. 반환 URL이 지정되지 않으면 /로 리다이렉트됩니다./어떤 ASP.NET이 default.aspx로 변경됩니다. 따라서 왜 내가 realm과 returnToUrl과 함께 오버로드를 사용하고 있는지. 영역은 나에게 문제를 제공하는 것입니다 - 수정 -하지만 지금은/로그인 내가 원하는대로 돌아갑니다.난 그냥 매우 성가신이며 아무 의미가 없게 던져 예외를 얻을 사실 –

+0

사실 내 모습으로 myetenid에 GET 요청에있는 기본 aspx 참조 dotnetopenauth 그것을 지정하는 것 같습니다. –

+0

왜 당신은 그 영역이 당신에게 문제를주고 있다고 주장합니까? 귀하의 질문에 포함 된 오류에 따르면, 이것은 영역과 관련이 없습니다. 'openid.return_to' 매개 변수에 지정된 DotNetOpenAuth 값은 제공자의 긍정적 인 주장을 실제로 처리하고있는 URL과 일치하지 않습니다. 당신이 모를 경우, OpenID return_to 매개 변수는 ASP.NET 양식 auth ReturnUrl 매개 변수와 완전히 다릅니다. –

0

순수 MVC3을 사용하고 있지만 오늘은 비슷한 문제가있었습니다.

보기 :

<form action="/Login/[email protected]" method="post"> 
MVC와 적어도 CreateRequest()와 returnUrl을 보내 할 필요가 없습니다, 로그인 핸들러에 이런 일을 양식을 게시 할 때 단지 매개 변수로 returnUrl을 통과 충분한 것 같다

컨트롤러 :

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

흥미롭게 returnUrl RelyingParty.GetResponse() 변수가 더 이상 없을 때 널 초, 오픈 아이디를 인증하는 동안이 방법을 통해 통과시에도 후 여전히 가능하다.

+0

나는 didnt한다 그러나 나는 그것을 일으키는 원인을 당신에게 말할 수있다. 나는 모든 URL을 default.aspx에 다시 써서 HTML에 대한 백엔드를 호출했다. 이것이 기본값을 기대하고 로그인을 허용하지 않는 이유입니다. 'HttpRequestInfo'를 취하는'OpenIdRelyingParty' 메서드의 오버로드를 호출 할 수 있습니다. 그러나 나는 결코 게으르지 않았고 리눅스에서 작동하지만 윈도우에서 테스트해야만한다는 것을 결코 이해하지 못했습니다. 그래서 나쁜 생각이었습니다. 귀찮게하고 노력을 멈췄다. –