2010-03-26 6 views
5

Ich versuche, die DotNetOpenId-Bibliothek zu verwenden, um die OpenID-Unterstützung auf einer Testwebsite hinzuzufügen. Aus irgendeinem Grund gibt es mir weiterhin den folgenden Fehler, wenn ich mit Firefox arbeite. Denken Sie daran, dass ich localhost verwende, da ich es auf meinem lokalen Rechner teste.Kein OpenID-Endpunkt gefunden

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; 
     } 


    } 
} 

Auch wenn ich die gleiche Seite in Chrome laufen dann bekomme ich folgendes:

Anmeldung fehlgeschlagen: Diese Nachricht wurde bereits verarbeitet. Dies könnte auf einen laufenden Replay-Angriff hinweisen.

+0

Ihre Frage enthält „mir folgende Fehler geben, wenn sie auf FireFix läuft.“ Feuerwehr? Und Sie haben den Fehler weggelassen, den Sie bekommen. –

Antwort

5

Die Wiedergabeangriffserkennung ergibt sich aus dem zweimaligen Aufruf von GetResponse(). Du darfst das nicht tun. Ordnen Sie stattdessen das Ergebnis von nur einem Aufruf GetResponse() zu einer lokalen Variablen zu, und überprüfen Sie es dann gegen Null, und verwenden Sie es andernfalls.

In Bezug auf Sie "No OpenID Endpunkt gefunden" -Fehler, testen Sie auch gegen eine Localhost OpenID oder eine OpenID gehostet von einer externen Partei wie Yahoo?

+0

Ich teste gegen locahost OpenID. – azamsharp

+4

Stellen Sie dann sicher, dass die Datei web.config Ihres RP localhost-OpenIDs zulässt, wie in dieser Datei web.config gezeigt: http://github.com/AArnott/dotnetopenid/blob/master/samples/OpenIdRelyingPartyMvc/Web.config by the ' 'tag. –

4

In meinem Fall, als ich einen Proxy verwendete, um eine Verbindung zum Internet herzustellen, löste ich, indem ich die folgende Konfiguration der web.config hinzufügte.

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

Sein bemerkenswert, dass der ‚No OpenID Endpunkt gefunden‘ Fehlermeldung nicht um eine echte Beschreibung sein kann, was das Problem ist.

Für mich war es, weil ich meine gmail E-Mail-Adresse aber tatsächlich benötigen Sie ein OpenId account erstellen Sie dann eine ID im Format erhalten .myopenid.com/

Geben Sie die Id in die Form und sollte richtig funktionieren.

0

Überprüfen Sie die Datei web.config in Ihrer Client-App. Es gibt einen Abschnitt

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

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