2010-06-21 14 views
0

Après avoir mis à niveau vers MVC2 et le plus récent dotnetopenauth je reçois toujours "Aucun point de terminaison OpenID trouvé." lorsque j'essaie de me connecter en utilisant google apps Je travaille bien sur localhost mais pas sur mon domaine - des idées?dotnetopenauth, MVC2 et aucun point de terminaison OpenID trouvé

namespace TheDataEngineMVCb1.Areas.Admin.Controllers 
{ 
    using System; 
    using System.Collections.Generic; 
    using System.Diagnostics.CodeAnalysis; 
    using System.Globalization; 
    using System.Linq; 
    using System.Security.Principal; 
    using System.Web; 
    using System.Web.Mvc; 
    using System.Web.Security; 
    using System.Web.UI; 
    using DotNetOpenAuth.Messaging; 
    using DotNetOpenAuth.OpenId; 
    using DotNetOpenAuth.OpenId.RelyingParty; 
    using DotNetOpenAuth.OpenId.Extensions.SimpleRegistration; 

    [HandleError] 
    public class AccountController : Controller 
    { 
     private static readonly HostMetaDiscoveryService GoogleAppsDiscovery = new HostMetaDiscoveryService 
     { 
      UseGoogleHostedHostMeta = true, 
     }; 

     private static OpenIdRelyingParty openid = new OpenIdRelyingParty(); 

     public ActionResult Index() 
     { 
      return View("Index"); 
     } 

     public ActionResult LoginPopup() 
     { 
      return View("LoginPopup"); 
     } 

     public ActionResult Logout() 
     { 
      FormsAuthentication.SignOut(); 
      return Redirect("/Admin"); 
     } 

     public ActionResult Login() 
     { 
      // Stage 1: display login form to user 
      return View("Login"); 
     } 

     [ValidateInput(false)] 
     public ActionResult Authenticate(string returnUrl) 
     { 
      openid.DiscoveryServices.Clear(); 
      openid.DiscoveryServices.Insert(0, GoogleAppsDiscovery); 
      var response = openid.GetResponse(); 
      if (response == null) 
      { 
       // Stage 2: user submitting Identifier 
       Identifier id; 

       if (Identifier.TryParse(Request.Form["openid_identifier"], out id) && Request.Form["openid_identifier"]!=null) 
       { 
        try 
        { 

         Session["openid_identifier"] = Server.HtmlEncode(Request.Form["openid_identifier"]); 
         var request = openid.CreateRequest(Request.Form["openid_identifier"]); 

         return request.RedirectingResponse.AsActionResult(); 
        } 
        catch (ProtocolException ex) 
        { 
         ViewData["Message"] = ex.Message; 
         return View("Login"); 
        } 
       } 
       else 
       { 
        ViewData["Message"] = "Invalid identifier"; 
        return View("Login"); 
       } 
      } 
      else 
      { 
       // Stage 3: OpenID Provider sending assertion response 
       switch (response.Status) 
       { 
        case AuthenticationStatus.Authenticated: 
         string authEmail = Request["dnoa.userSuppliedIdentifier"].ToString(); 

         FormsAuthentication.SetAuthCookie(authEmail, false); 

         if (!string.IsNullOrEmpty(returnUrl)) 
         { 
          return Redirect(returnUrl); 
         } 
         else 
         { 
          return RedirectToAction("Index", "Home"); 
         } 
        case AuthenticationStatus.Canceled: 
         ViewData["Message"] = "Canceled at provider"; 
         return View("Login"); 
        case AuthenticationStatus.Failed: 
         ViewData["Message"] = response.Exception.Message; 
         return View("Login"); 
       } 
      } 
      return new EmptyResult(); 
     } 
    } 
} 

Répondre

3

Cela peut être un problème de confiance. Les OpenID Google Apps requièrent que votre RP soit marqué avec une confiance totale. Peut-être que c'est sur votre localhost mais pas sur votre site en direct?

+0

Cela a fonctionné mais étrange qui changerait lors de la mise à niveau vers MVC2 (cela a bien fonctionné avec MVC1) - merci – pch