2013-07-02 24 views
6

Mam self-hosted wystąpienie SignalR, za pomocą OWIN. Chciałbym wprowadzić autoryzację. Moi użytkownicy będą już logować się do aplikacji ASP.NET MVC, korzystając z Uwierzytelniania za pomocą formularzy.Akceptowanie plików cookie uwierzytelniania formularzy ASP.NET w hostowanej przez OWIN implementacji SignalR?

Ponieważ obie aplikacje będą dostępne pod tym samym adresem URL, pliki cookie będą udostępniane między tymi dwoma. Jak mogę zaakceptować plik cookie uwierzytelniania formularzy w samodzielnie hostowanej aplikacji SignalR?

Wyjaśnienie: Mówię o przeglądarce, która uzyskuje dostęp do samohostowanego koncentratora SignalR przy użyciu tych samych poświadczeń, które zostały użyte do zalogowania się w oddzielnej (ale powiązanej i zainstalowanej na tym samym hoście) aplikacji IIS.

Pytanie brzmi: w jaki sposób mogę podłączyć się do potoku serwera SignalR, aby przechwycić plik cookie .ASPXAUTH i użyć go do ustawienia aktualnej nazwy użytkownika przed wywołaniem koncentratora?

Jeśli to pomoże, mogę wrzucić trochę Nancy do miksu.

+0

Czy kiedykolwiek znalazłeś rozwiązanie swojego problemu? Próbuję zrobić to samo (chociaż moja aplikacja MVC i moja własna hostowana usługa SignalR są na różnych portach). –

Odpowiedz

0

Jeśli użytkownik jest już uwierzytelniony i zalogowaniu się, można sprawdzić następujące zasięgu koncentratora SignalR:

Context.User.Identity.IsAuthenticated 

Zapewniam ta właściwość jest ustawiona na wartość true. Możesz umieścić tę kontrolę w konstruktorze swojego huba, aby zablokować/usunąć ich połączenie. Jeśli jest false, możesz przekierować je na inną stronę.

+0

Uwierzytelnienie występuje w aplikacji MVC, a nie w usłudze. Plik cookie .ASPXAUTH może być wykorzystany w obu, ale jak mogę go podłączyć do potoku SignalR lub OWIN? –

+1

Roger, widzę to, czego szukasz, ale nigdy nie próbowałem tego zrobić. Dla klasy połączenia istnieje właściwość o nazwie "CookieContainer". Można to znaleźć w [Microsoft.AspNet.SignalR.Client.Connection] (http://msdn.microsoft.com/en-us/library/microsoft.aspnet.signalr.client.connection.cookiecontainer (v = vs.111) .aspx), gdzie można go/ustawić. W ramach tego można wykorzystać kod z tego [odpowiedzi] (http://stackoverflow.com/questions/13022415/signalr-net-client-fails-to-connect-upd-how-to-set-auth-cookie) na spróbuj i dodaj. – SeanPrice