Заголовок DotNetOpenAuth и X-XRDS-Location - PullRequest
4 голосов
/ 26 января 2012

Я играю с примерами DotNetOpenAuth, пытаясь понять, как правильно интегрироваться с OpenID.Один из примеров называется OpenIdRelyingPartyMvc.У него есть две секции кода, в которых я не уверен, как они влияют на функциональность.

  • В 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, она никогда не срабатывает.

1 Ответ

3 голосов
/ 27 января 2012

Маршрут в global.asax.cs может быть лишним.

Заголовок X-XRDS-Location, который вы удаляете, не является строго необходимым для потока OpenID, но если вы публикуете приложение проверяющей стороны без него, Yahoo! и другие поставщики OpenID могут предупредить пользователя о том, что ваш сайт не является законным .

Вы можете проверить это локально (и, таким образом, наблюдать, как выполняется действие Home / Xrds), запустив образец OpenIdProviderWebForms и войдя в свой RP, используя идентификатор из этого образца OP. Во время входа в систему OP будет запрашивать XRDS RP, и на веб-странице с просьбой подтвердить вход в систему будет указано, была ли «проверка RP» успешной или неудачной. Если все получилось, вам нужно идти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...