2010-03-26 22 views
5

Estoy tratando de usar la biblioteca DotNetOpenId para agregar soporte OpenID en un sitio web de prueba. Por alguna razón, me sigue dando el siguiente error cuando se ejecuta en Firefox. Tenga en cuenta que estoy usando localhost como lo estoy probando en mi máquina local.No se encontró ningún punto final 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; 
     } 


    } 
} 

Además, si corro la misma página en Chrome y luego me sale el siguiente:

conexión falló: Este mensaje ya ha sido procesado. Esto podría indicar un ataque de repetición en progreso.

+0

Su pregunta incluye "Me da el siguiente error al ejecutar en FireFix." Firefix? Y olvidaste el error que obtienes. –

Respuesta

5

La detección de ataque de repetición tiene como resultado que usted llame al GetResponse() dos veces. No debes hacer eso. En su lugar, asigne el resultado de una sola llamada a GetResponse() a una variable local, y luego véala contra nulo y utilícela de lo contrario.

En cuanto a su error "No se encontró el punto final OpenID", ¿está probando también en un servidor localhost OpenID o en un OpenID alojado por un tercero externo como Yahoo?

+0

Estoy probando contra locahost OpenID. – azamsharp

+4

Luego, asegúrese de que el archivo web.config de su RP permita los ID de dominio localhost, como se muestra en este archivo web.config: http://github.com/AArnott/dotnetopenid/blob/master/samples/OpenIdRelyingPartyMvc/Web.config por ' 'tag. –

4

En mi caso, como estaba usando un proxy para conectarme a Internet, resolví agregando la siguiente configuración a web.config.

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

Vale la pena señalar que el 'punto final de OpenID No se encontró' mensaje de error puede no ser una verdadera descripción de cuál es el problema.

Para mí fue porque yo estaba usando mi dirección de correo electrónico de Gmail, pero en realidad es necesario crear un OpenId account a continuación, recibirá un identificador en el formato .myopenid.com/

entrar en esa identificación en la forma y debería funcionar correctamente

0

Compruebe el archivo web.config en su aplicación cliente. Hay una sección

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

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