2013-09-06 29 views
6

SignalRを使用してフォーム認証またはWindows認証を行う方法に関する情報がたくさんあります。自分の認証DBを使用することに興味があります。接続エージェントはサービスであり、人間の背後にあるWebブラウザではないため、.NETクライアントを使用します。私は、理想的には私のクライアントコードの使用希望:SignalR(.NETクライアント)でカスタム基本認証を使用するにはどうすればよいですか?

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

そして、私のサーバー・コードはハブの[承認]を使用すると、私に利用できるContext.Userを持っています。すべての通信はhttpsを超えているので、プレーンテキストは気にしません。

私はのIHttpModuleを使用した認証メカニズムを無効にする方法を示してasp.net basic authenticationガイドを読みました。しかし、HttpModuleのコードをブレークポイントすると、.NET SignalRクライアントからの要求に 'Authorization'ヘッダーが設定されていないようです。

私がやりたいことのすべては、自明のクライアントからユーザ名とパスワードを渡すと、認証がサーバー上で発生したどのようにアップコードです。それはとても難しいですか?魔法はありません。 Active Directoryがありません。私の認証。

現在、私の現在のアプローチは、カスタムAuthorizeAttributeを使用してSignalRレベルで解釈されるカスタムヘッダーを設定することですが、明らかに '正しい方法は承認レベルで認証を行うのではなく、 SignalRの処理が行われる前にWebサーバーに通知させてください。

誰もがフルのための良好な手順を説明しますが、汚れシンプル、カスタム認証してくださいことはできますか?

答えて

5

クライアント

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

サーバー

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

NuGetパッケージが必要:Microsoft.Owin.Security.Basic

あなたは完全なサンプルを見ることができますhere

+0

をOあなたが自己ホストされている場合、勝つものですか?私はIISでホストされ、app.Anything()とは思えません。私はそこではありません驚いているだけで「ValidateUserメソッドを提供し、あなたが行くオフ」 – Robin

+0

あなたは、私がMicrosoft.Owin.Security.Basic NuGetパッケージのすべての日を検索してきたOwinはIIS –

+5

上でホストされて使用することができます。これはもうnuget.orgにはありません。それは別のNuGetサーバーにありますか? Katanaプロジェクトサイトでは、このパッケージは2.0.0.0でリリースされたとのことです。助けてくれてありがとう。 –

関連する問題