Coś brakuje innych odpowiedzi jest możliwość korzystania SignalR wbudowanego w zwyczaju klasy auth. Faktyczna dokumentacja SignalR na ten temat jest okropna, ale na dole strony zostawiłem komentarz opisujący, jak to zrobić (Authentication and Authorization for SignalR Hubs).
Zasadniczo zastąpić dostarczonym klasa SignalR AuthorizeAttribute
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public class CustomAuthAttribute : AuthorizeAttribute
Następnie udekorować swój piast z [CustomAuth] wyżej deklaracji klasy. Następnie można zastąpić następujące metody do obsługi uwierzytelniania:
bool AuthorizeHubConnection(HubDescriptor hubDesc, IRequest request);
bool AuthorizeHubMethodInvocation(IHubIncomingInvokerContext hubContext, bool appliesToMethod);
Ponieważ jestem na serwerach IIS i mieć własnego schematu uwierzytelniania, po prostu wrócić prawdziwe od sposobu AuthorizeHubConnection, ponieważ w moim Auth HttpModule już authenicate/signalr/connect i/signalr/reconnect wywołania i zapisz dane użytkownika w elemencie HttpContext. Dlatego moduł obsługuje uwierzytelnianie podczas początkowego połączenia SignalR (standardowe połączenie HTTP inicjujące połączenie z gniazdem sieciowym).
Aby autoryzować połączenia dla określonych metod koncentratora, sprawdzam nazwy metod względem uprawnień zapisanych w HttpContext (jest to ten sam HttpContext zapisany od początkowego żądania połączenia) i zwracam true lub false w zależności od tego, czy użytkownik ma uprawnienia do wywoływania pewnych metoda.
W twoim przypadku możesz faktycznie używać metody AuthorizeHubConnection i udekorować swoje metody koncentratora konkretnymi rolami, ponieważ wygląda na to, że używasz znormalizowanego systemu tożsamości, ale jeśli coś nie działa poprawnie, zawsze możesz wrócić do brute force z HttpModule (lub OWIN) middleware i wyszukiwanie danych kontekstowych w kolejnych wywołaniach websocket za pomocą AuthorizeHubMethodInvocation.
Kolejny sposób na blokowanie adresów URL za pomocą signalr 1.0 i Owina: http://eworldproblems.mbaynton.com/2012/12/securing-signalr-to-your-sites-users/ – mbaynton