2013-07-02 1 views
6

J'ai une instance SignalR auto-hébergée, utilisant OWIN. J'aimerais mettre en place l'autorisation. Mes utilisateurs se seront déjà connectés à une application ASP.NET MVC à l'aide de l'authentification par formulaire. Comme les deux applications seront disponibles à la même adresse URL, les cookies seront partagés entre les deux. Comment accepter un cookie d'authentification par formulaires dans une application SignalR auto-hébergée? Clarification: Je parle d'un navigateur accédant à un concentrateur SignalR auto-hébergé utilisant les mêmes informations d'identification que celles utilisées pour se connecter à une application IIS distincte (mais liée et installée sur le même hôte). Donc, la question est: comment puis-je me connecter au pipeline du serveur SignalR pour capturer le cookie .ASPXAUTH et l'utiliser pour définir le principal actuel avant d'appeler le concentrateur? Si cela aide, je peux jeter un peu de Nancy dans le mélange.Accepter les cookies d'authentification ASP.NET Forms dans une implémentation SignalR hébergée par OWIN?

+0

Avez-vous déjà trouvé une solution à votre problème? J'essaie la même chose (même si mon application MVC et mon service SignalR auto-hébergé sont sur des ports différents). –

Répondre

0

Si votre utilisateur est déjà authentifié et connecté, vous pouvez vérifier les éléments suivants dans votre hub SignalR:

Context.User.Identity.IsAuthenticated 

cette propriété est Assure la valeur true. Vous pouvez placer cette vérification dans le constructeur de votre hub pour bloquer/supprimer leur connexion. Si faux, vous pouvez les rediriger vers une autre page.

+0

L'authentification se produit dans l'application MVC et non dans le service. Le cookie .ASPXAUTH peut être consommé dans les deux, mais comment puis-je l'intégrer dans le pipeline SignalR ou OWIN? –

+1

Roger, je vois ce que vous cherchez, mais je n'ai jamais essayé de le faire. Pour la classe de connexion, il existe une propriété appelée "CookieContainer". Cela se trouve dans [Microsoft.AspNet.SignalR.Client.Connection] (http://msdn.microsoft.com/en-us/library/microsoft.aspnet.signalr.client.connection.cookiecontainer (v = vs.111) .aspx) où vous pouvez l'obtenir/le définir. Dans ce cadre, vous pouvez utiliser le code de cette [réponse] (http://stackoverflow.com/questions/13022415/signalr-net-client-fails-to-connect-upd-how-to-set-auth-cookie) pour essayez et ajoutez-le. – SeanPrice

Questions connexes