2013-09-06 12 views
6

Istnieje wiele informacji o tym, jak wykonać uwierzytelnianie formularzy lub uwierzytelnianie systemu Windows za pomocą SignalR. Interesuje mnie używanie mojej własnej bazy uwierzytelniającej. Używam klienta .NET, ponieważ agentem łączącym jest usługa, a nie przeglądarka internetowa z człowiekiem. Ja bym idealnie jak mój klient użyć kodu:Jak używać niestandardowego uwierzytelniania podstawowego z SignalR (klient .NET)?

hubConnection.Credentials = new NetworkCredential(userName, password); 

A mój kod serwera używać [Autoryzuj] w piastach i mieć Context.User dla mnie dostępne. Wszystkie komunikaty są nad https, więc nie dbam o zwykły tekst.

Przeczytałem przewodnik asp.net basic authentication, który pokazuje, jak przesłonić mechanizm uwierzytelniania za pomocą modułu IHttpModule. Jednak nagłówek "autoryzacji" nigdy nie wydaje się być ustawiony w żądaniach przychodzących od klienta .NET SignalR, kiedy dzielę kod na HttpModule.

Wszystko, co chcę zrobić, to zwyczajnie przekazać nazwę użytkownika i hasło od klienta i zakodować sposób uwierzytelniania na serwerze. Czy to takie trudne? Bez magii. Brak Active Directory. Po prostu uwierzytelnienie przeze mnie.

Moje bieżące, działające podejście polega na ustawianiu niestandardowych nagłówków interpretowanych na poziomie SignalR (przy użyciu niestandardowego AuthorizeAttribute), jednak pozornie "właściwym sposobem na to" nie jest uwierzytelnianie na poziomie autoryzacji, a zamiast tego niech serwer WWW zrobi to zanim zdarzy się jakikolwiek sygnał z SignalR.

Czy każdy może opisać dobrą procedurę pełnego, ale prostego, niestandardowego uwierzytelniania?

Odpowiedz

5

Client

var connection = new Connection(url + "/echo"); connection.Credentials = new NetworkCredential("user", "password"); await connection.Start();

Server

app.Map("/basicauth", map => { map.UseBasicAuthentication(new BasicAuthenticationProvider()); map.MapSignalR<AuthenticatedEchoConnection>("/echo"); map.MapSignalR(); });

Nuget Pakiet wymagany: Microsoft.Owin.Security.Basic

Można zobaczyć pełną Przykładowe here

+0

O wygraj, jeśli jesteś samoulepszony, prawda? Będę hostować w IIS i nie będę mieć app.Anything() myślę. Jestem zaskoczony, że nie tylko "podaję metodę ValidateUser i odejdę". – Robin

+0

Możesz użyć Owina hostowanego na IIS –

+5

Przez cały dzień szukałem pakietu Microsoft.Owin.Security.Basic NuGet. To już nie jest na nuget.org. Czy jest na innym serwerze NuGet? Na stronie projektu Katana jest napisane, że pakiet został wydany w wersji 2.0.0.0. Dzięki za pomoc. –

Powiązane problemy