2012-01-26 16 views
4

我在玩DotNetOpenAuth示例,試圖瞭解如何正確地與OpenID集成。其中一個示例稱爲OpenIdRelyingPartyMvc。它有兩個代碼段,我不確定它們如何影響功能。DotNetOpenAuth和X-XRDS-位置標題

  • 在Global.asax.cs中:

    routes.MapRoute(
        "Default",            // Route name 
        "{controller}/{action}/{id}",       // URL with parameters 
        new { controller = "Home", action = "Index", id = string.Empty }); // Parameter defaults 
    
    routes.MapRoute(
        "Root", 
        string.Empty, 
        new { controller = "Home", action = "Index", id = string.Empty }); 
    

如果我刪除映射 「路由」 最後一行,似乎沒有任何影響:映射 「默認」 似乎是足夠的。爲什麼會有「路線」路線?

  • 在HomeController.cs

    public class HomeController : Controller { 
        public ActionResult Index() { 
         Response.AppendHeader(
          "X-XRDS-Location", 
          new Uri(Request.Url, 
           Response.ApplyAppPathModifier("~/Home/xrds")).AbsoluteUri); 
         return View("Index"); 
        } 
    
        public ActionResult Xrds() 
        { 
         return View("Xrds"); 
        } 
    } 
    

如果我刪除 「AppendHeader」 呼叫和測試樣品,它仍然有效!我明白這個頭文件是足夠的,我不能讓示例應用程序依賴它:它在沒有被設置的情況下工作。如果我在Xrds方法中設置斷點,它永遠不會被觸發。

回答

3

global.asax.cs中的路由可能是多餘的。

X-XRDS-Location頭,你刪除不是絕對​​必要的OpenID的流量,但如果你不發表您的信賴方應用程序,Yahoo! and other OpenID Providers may warn the user that your site is not legit

可以在本地進行測試(並因此觀察正在執行的主頁/ XRDS動作)通過運行OpenIdProviderWebForms樣品,並使用從該樣品OP的標識符登錄到自己的RP。在登錄過程中,OP會查詢RP的XRDS,並在網頁上要求您確認登錄,它會顯示「RP驗證」成功還是失敗。如果成功了,你應該很好走。

+0

謝謝安德魯,我期待着你的答案:-)現在對我來說很清楚。 –