2010-03-10 11 views
5

A) io voglio essere in grado di supportare la protezione tramite password del mio feed RSS attraverso i seguenti metodi di autenticazione:implementazione della sicurezza per i feed RSS

HTTP di base integrata di Windows (NTLM/Kerberos) Digest

1 Come posso farlo in asp.net mvc

B) Leggendo la specifica RSS 2.0, non ho visto nulla relativo alla sicurezza, quindi presumo che la sicurezza implementata per il feed RSS sia gestita da una parte dal web server che gestisce la richiesta HTTP per il feed RSS, e dall'altra parte il cliente che richiede l'accesso al feed RSS. Il client deve raccogliere un nome utente e una password e inserire tali informazioni nella richiesta al server. Sono curioso di sapere come (o se) siti come UserLand, o Weblog di ASP.NET offrono feed RSS protetti da password, e dall'altra parte del recinto, come sono gli aggregatori RSS come NewsGator, NewzCrawler, SharpReader, ecc. feed RSS protetti?

risposta

2

RSS non ha alcuna sicurezza integrata. È possibile sfruttare ASP.NET MVC creando un ActionResult personalizzato, che può fornire l'autenticazione, questo è con l'autenticazione dei moduli, ma è possibile vedere l'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

Potresti spiegare perché è meglio autenticarsi quando si esegue il risultato, invece di autenticare (in) direttamente l'azione del controllore? L'autenticazione non è inerente a RssActionResult, in quanto non è ViewResult o JsonResult (e questo è il motivo per cui MVC non implementa l'autenticazione quando si eseguono i risultati, credo) – Marek

+0

@Marek, buon punto. Stavo solo mostrando un esempio. Non ho mai avuto la necessità di proteggere gli RSS in quanto vedo molti problemi con esso. Tuttavia, utilizzando un RSSActionFilter, il feed consentirà l'esecuzione dell'autenticazione, ovunque si trovi. –