2012-03-15 33 views
14

En SignalR .NET, se establece una conexión de la siguiente manera entre el cliente y el servidor:SignalR conexión segura entre el cliente y el servidor .NET

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

A continuación, nos suscribimos los eventos y empezar la conexión de la siguiente manera:

connection.Start().Wait(); 

¿Qué ocurre si deseo establecer una conexión segura entre el cliente y el servidor? ¿Cómo podemos lograr eso con las características actuales?

Me di cuenta de que hay un tipo de propiedad de System.Net.ICredentials en la clase HubConnection. ¿Es este el camino para esto? Si es así, ¿cómo debemos manejar la autenticación en el lado del servidor para nuestros Hubs?

Respuesta

25

Así es como yo la mía establecido:

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

    hubConnection.Start().Wait(); 

Se podría, por supuesto, pasar en diferentes credenciales, utilizo DefaultNetworkCredentials

Las credenciales devueltas por DefaultNetworkCredentials representa las credenciales de autenticación para la corriente contexto de seguridad en el que se ejecuta la aplicación. Para una aplicación del lado del cliente, estas son generalmente las credenciales de Windows (nombre de usuario, contraseña y dominio) del usuario que ejecuta la aplicación. Para las aplicaciones ASP.NET, las credenciales de red predeterminadas son las credenciales de usuario del usuario que inició sesión, o el usuario que se suplanta.

+0

Ok, esto es bueno. ¿Cómo auth el usuario en el servidor con esas credenciales? ¿Cómo lo maneja SignalR? – tugberk

+1

SignalR no está involucrado en la autenticación en absoluto. Simplemente pasa a través de las credenciales del host subyacente. En el caso del ejemplo anterior, necesitaría tener su SignalR protegido con Autenticación de Windows para que las credenciales de red predeterminadas hagan cualquier cosa. Entonces puede autorizar al usuario según su propia lógica (¿el usuario "Bob" puede llamar al método concentrador "Foo"?) –

+0

@DamianEdwards entonces, ¿podemos decir que crear una aplicación de chat de escritorio que tenga autenticación basada en el usuario (como Windows? Live Messagner) con SignalR no es una buena idea (al menos por ahora)? Ustedes tienen JabbR como IRC que tiene formularios-auth. ¿Tiene alguna muestra de autenticación de escritorio que pueda ver y comprender la idea? – tugberk

Cuestiones relacionadas