2012-03-15 14 views
14

Su SignalR .NET, abbiamo stabilire una connessione, come di seguito tra il client e il server:SignalR sicura connessione tra il client e il server .NET

var connection = new HubConnection("http://mysite/"); 

Avanti, sottoscriviamo gli eventi e avviare la connessione, come di seguito:

connection.Start().Wait(); 

E se volessi stabilire una connessione sicura tra client e server. Come possiamo ottenerlo con le caratteristiche attuali?

Ho notato che esiste un tipo di proprietà System.Net.ICredentials nella classe HubConnection. È questo il modo per questo? In tal caso, come dovremmo gestire l'Auth sul lato server per i nostri Hub?

risposta

25

Ecco come io ho il mio set up:

var hubConnection = new HubConnection("http://siteurl"); 
    hubConnection.Credentials = CredentialCache.DefaultNetworkCredentials; 
    hubProxy = hubConnection.CreateProxy("My.Hub.Namespace"); 

    hubConnection.Start().Wait(); 

Si potrebbe naturalmente passare credenziali diverse, io uso DefaultNetworkCredentials

Le credenziali restituiti da DefaultNetworkCredentials rappresenta le credenziali di autenticazione per i seguenti contesto di sicurezza in cui è in esecuzione l'applicazione. Per un'applicazione lato client, si tratta in genere delle credenziali di Windows (nome utente, password e dominio) dell'utente che esegue l'applicazione. Per le applicazioni ASP.NET, le credenziali di rete predefinite sono le credenziali dell'utente dell'utente connesso o dell'utente che viene rappresentato.

+0

Ok, questo è bello. Come si autorizza l'utente sul server con tali credenziali? Come gestisce SignalR questo? – tugberk

+1

SignalR non è coinvolto nell'autenticazione. Passa semplicemente attraverso le credenziali dall'host sottostante. Nel caso dell'esempio sopra, è necessario che il SignalR sia protetto utilizzando l'autenticazione di Windows per fare in modo che le credenziali di rete predefinite facciano qualsiasi cosa. Quindi puoi autorizzare l'utente in base alla tua logica (l'utente "Bob" può chiamare il metodo hub "Foo"?) –

+0

@DamianEdwards quindi, possiamo dire che creare un'applicazione di chat desktop che abbia un'autenticazione basata sull'utente (proprio come Windows? Live Messagner) con SignalR non è una buona idea (almeno per ora)? Voi ragazzi avete JabbR come IRC che ha forme-auth. Avete qualche esempio di autenticazione desktop che posso dare un'occhiata e cogliere l'idea? – tugberk

Problemi correlati