2010-03-10 15 views
5

A) Quiero ser capaz de apoyar la protección de contraseña de mi canales RSS a través de los siguientes métodos de autenticación:Implementación de la seguridad para RSS Feeds

básica HTTP Windows integrada (NTLM/Kerberos) Digesto

1) ¿Cómo puedo hacer eso en asp.net mvc

B) Al leer la especificación RSS 2.0, no vi nada relacionado con la seguridad, así que supongo que la seguridad implementada para la fuente RSS se maneja en un extremo por la web servidor que maneja la solicitud HTTP para la alimentación RSS, y en el otro lado, por parte del cliente que solicita acceso a la fuente RSS. El cliente debe recopilar un nombre de usuario y una contraseña, y poner esa información en la solicitud al servidor. Tengo curiosidad por saber cómo (o si) los sitios como UserLand, o los WeQL de ASP.NET ofrecen fuentes RSS protegidas por contraseña, y en el otro lado de la valla, ¿cómo manejan la contraseña los agregadores RSS como NewsGator, NewzCrawler, SharpReader, etc. RSS protegido?

Respuesta

2

RSS no tiene ninguna seguridad incorporada. Puede aprovechar ASP.NET MVC creando un ActionResult personalizado, que puede proporcionar autenticación, esto es con autenticación de formularios, pero puede ver la idea.

public class RssActionResult : ActionResult 
{ 
    public SyndicationFeed Feed { get;set; } 

    public override void ExecuteResult(ControllerContext context) 
    { 
     if (context.HttpContext.Current.User.Identity.IsAuthenticated) 
     { 
      context.HttpContext.Response.ContentType = "application/rss+xml"; 
      Rss20FeedFormatter rssFormatter = new Rss20FeedFormatter(Feed); 
      using (XmlWriter writer = XmlWriter.Create(context.HttpContext.Response.Output)) 
      { 
       rssFormatter.WriteTo(writer); 
      } 
     } 
     else 
     { 
      //Whatever, not authenticated 
     } 
    } 
} 
+1

¿Podría explicar por qué es mejor autenticarse al ejecutar el resultado, en lugar de autenticar (in) la acción del controlador directamente? La autenticación no es inherente a RssActionResult, ya que no es ViewResult o JsonResult (y esta es la razón por la cual MVC no implementa la autenticación al ejecutar los resultados, creo) – Marek

+0

@Marek, buen punto. Solo estaba mostrando un ejemplo. Nunca tuve la necesidad de asegurar RSS porque veo muchos problemas con él. Sin embargo, el uso de un filtro RSSActionFilter permitirá que la autenticación se realice, independientemente de dónde se encuentre. –