2010-03-26 71 views
5

我正在嘗試使用DotNetOpenId庫在測試網站上添加OpenID支持。出於某種原因,它在Firefox上運行時一直給我提供以下錯誤。請記住,我正在使用本地主機,因爲我正在本地機器上測試它。找不到OpenID端點

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using DotNetOpenAuth.OpenId.Extensions.ProviderAuthenticationPolicy; 
using DotNetOpenAuth.OpenId.Extensions.SimpleRegistration; 
using DotNetOpenAuth.OpenId.RelyingParty; 

namespace TableSorterDemo 
{ 
    public partial class Login : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      var openid = new OpenIdRelyingParty(); 
      if (openid.GetResponse() != null) 
      { 
       switch (openid.GetResponse().Status) 
       { 
        case AuthenticationStatus.Authenticated: 
         var fetch = openid.GetResponse().GetExtension(typeof(ClaimsResponse)) as ClaimsResponse; 
         var nick = fetch.Nickname; 
         var email = fetch.Email; 

         break; 
       } 
      } 
     } 

     protected void OpenIdLogin1_LoggedIn(object sender, OpenIdEventArgs e) 
     { 
      var openid = new OpenIdRelyingParty(); 
      if(openid.GetResponse() != null) 
      { 
       switch(openid.GetResponse().Status) 
       { 
        case AuthenticationStatus.Authenticated: 
         var fetch = openid.GetResponse().GetExtension(typeof (ClaimsResponse)) as ClaimsResponse; 
         var nick = fetch.Nickname; 
         var email = fetch.Email; 

         break; 
       } 
      } 


     } 

     protected void OpenIdLogin1_LoggingIn(object sender, OpenIdEventArgs e) 
     { 
      var openid = new OpenIdRelyingParty(); 
      var req = openid.CreateRequest(OpenIdLogin1.Text); 
      var fetch = new ClaimsRequest(); 
      fetch.Email = DemandLevel.Require; 
      fetch.Nickname = DemandLevel.Require; 
      req.AddExtension(fetch); 
      req.RedirectToProvider(); 
      return; 
     } 


    } 
} 

另外,如果我運行在Chrome相同的頁面,然後我得到如下:

登錄失敗:此消息已被處理。這可能表示正在進行重播攻擊。

+0

您的問題包括「在FireFix上運行時給我以下錯誤」。 Firefix?你忘了你得到的錯誤。 – 2010-03-26 16:09:35

回答

5

重播攻擊檢測結果來自您撥打GetResponse()兩次。你不能這樣做。相反,將只有一個調用的結果分配給一個局部變量,然後檢查它是否爲null,否則使用它。

關於您「沒有找到OpenID端點」錯誤,您是在針對本地主機OpenID進行測試還是針對外部團體(如雅虎)託管的OpenID進行測試?

+0

我正在對locahost OpenID進行測試。 – azamsharp 2010-03-26 16:18:06

+4

然後確保您的RP的web.config文件允許localhost OpenID,如以下web.config文件所示:http://github.com/AArnott/dotnetopenid/blob/master/samples/OpenIdRelyingPartyMvc/Web.config by' '標籤。 – 2010-03-26 16:57:34

4

在我使用代理連接到互聯網的情況下,我通過將以下配置添加到web.config中解決。

<system.net> 
<defaultProxy useDefaultCredentials="true"> 
    <proxy autoDetect="True" usesystemdefault="True" /> 
</defaultProxy> 
</system.net> 
0

值得注意的是,'找不到OpenID端點'錯誤消息可能不是真正的問題描述。

對於我,那是因爲我是用我的Gmail電子郵件地址,但實際上你需要創建一個OpenId account那麼你會得到一個ID格式.myopenid.com/

輸入ID插入表格,並應該正常工作。

0

檢查客戶端應用程序中的web.config。 有段

    <!-- Uncomment to enable communication with localhost (should generally not activate in production!) --> 
       <!--<add name="localhost" />--> 

So as it says - uncomment to 
<add name="localhost" />