Rendere sicuro un hub di ASP.NET SignalR

di Marco De Sanctis, in ASP.NET 4.5, ASP.NET MVC,

Negli esempi che abbiamo visto fino a oggi su ASP.NET SignalR, abbiamo sempre utilizzato hub che erano invocabili anche da un utente anonimo. In realtà, questo framework è in grado di gestire anche scenari in cui sia richiesta l'autenticazione dell'utente stesso. Per rendere sicuro un hub, infatti, non dobbiamo far altro che utilizzare l'attributo Authorize:

[Authorize]
public class PingBackHub : Hub
{
  public void SendMessage(string message)
  {
    this.Clients.All.pingBack(
      string.Format("Client {0} says: {1}", 
        this.Context.User.Identity.Name, message));
  }
}

Questo attributo funziona in maniera analoga a quello di ASP.NET MVC: se utilizzato senza parametri, richiede una semplice autenticazione, ma eventualmente permette anche di specificare ruoli o nomi degli utenti abilitati. Esso può essere applicato a un singolo metodo o, come nel nostro esempio, all'intero hub. In quest'ultimo caso, un client non autenticato non riuscirà a effettuare la connessione.

Se vogliamo consentire comunque la connessione, possiamo impostare la proprietà RequireOutgoing a false:

[Authorize(RequireOutgoing = false)]
public class PingBackHub : Hub
{
  // ...
}

In questo caso, i client anonimi saranno abilitati solo a ricevere i messaggi inviati dal server, ma non saranno in grado di invocarne i metodi esposti.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi