2014-06-17 20 views
5

Ho cercato questo per un po 'e non riesco a capirlo.Come autenticare il client SignalR .NET con MVC5 Identity Framework ASP.NET

Possiedo un client .NET SignalR che deve essere autenticato con ASP.NET Identity (MVC5) in modo che possa accedere agli hub SignalR protetti con l'attributo [Authorize].

ho trovato la seguente risorsa (Si prega di visualizzare le opzioni di autenticazione per .NET Client/Cookie):

http://www.asp.net/signalr/overview/signalr-20/security/hub-authorization

Tuttavia il codice di esempio per recuperare il cookie non funziona a causa di:

authCookie = response.Cookies[FormsAuthentication.FormsCookieName]; 

e poiché non sto utilizzando l'autenticazione basata su form, questo genera un errore.

Non sono sicuro di come modificare questo per l'identità ASP.NET?

Sono concentrato sull'approccio corretto, vale a dire. recuperare un cookie e quindi aggiungerlo al contenitore dei cookie? o dovrei passare il nome utente e la password nelle intestazioni a un hub e autenticare in qualche modo in questo modo?

Non mi sono reso conto di quanto sarebbe stato confuso l'autenticazione tramite un client .NET con SignalR e Identity Framework.

Anche se non è il mio caso d'uso, sto taggando anche la domanda con Xamarin perché ritengo che questo potrebbe essere un problema affrontato dagli sviluppatori di Xamarin mobile che utilizzano anche il client SignalR .NET.

Poiché non riesco a trovare esempi su Internet, qualsiasi assistenza sarebbe molto apprezzata. Grazie.

+0

e come si ottiene a tutti? metto autorizza, poi uso MVC5, accedo, mi dicono ancora non autorizzato ... inoltre non c'è l'anteprima del codice, per la prima parte che usa AuthorizeAttribute, per dire cosa fare oltre a mettere questo attributo, ... per essere in grado di autorizzare o non autorizzare un cliente. – deadManN

risposta

1

Basta cambiare questa

var authCookie = response.Cookies[FormsAuthentication.FormsCookieName];

a

var authCookie = response.Cookies[".AspNet.ApplicationCookie"];

0

Se si utilizza ASP.NET identità con Owin, dopo che l'utente connesso e auhtenticate con successo, per le richieste in arrivo è possibile modificare AuthenticateUser metodo da questo:

using (var response = request.GetResponse() as HttpWebResponse) 
     { 
      authCookie = response.Cookies[FormsAuthentication.FormsCookieName]; 
     } 

     if (authCookie != null) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 

a questo:

var context = Request.GetOwinContext(); 
var isAuthenticated= context.Authentication.User.Identity.IsAuthenticated; 
return isAuthenticated; 

e se avete solo bisogno ottenere biscotto:

var cookieName = Request.Cookies.AllKeys.SingleOrDefault(c => c.Contains(DefaultAuthenticationTypes.ApplicationCookie)); 
if (cookieName != null) 
{ 
    var cookie = Request.Cookies[cookieName]; 
} 
+0

Perdonami per non aver ancora risposto. Sto cercando di ottenere prima l'autenticazione dell'utente. Tornerà per rispondere. Grazie per il tuo contributo. –

+0

E non è mai tornato .. @SiBxxx – Zimano

Problemi correlati