7

SignalR を使用してフォーム認証または Windows 認証を行う方法については、多くの情報があります。独自の認証 DB の使用に興味があります。私は .NET クライアントを使用します。これは、接続エージェントがサービスであり、背後に人間がいる Web ブラウザーではないためです。理想的には、クライアント コードを次のように使用したいと思います。

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

そして、ハブで [Authorize] を使用し、Context.User を利用できるようにするサーバー コード。すべての通信は https 経由なので、プレーン テキストは気にしません。

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

私がやりたいことは、クライアントからユーザー名とパスワードを簡単に渡し、サーバーで認証が行われる方法をコード化することだけです。そんなに大変ですか?魔法はありません。アクティブ ディレクトリなし。私だけの認証。

私の現在の作業中のアプローチは、SignalR レベルで解釈されるカスタム ヘッダーを設定することです (カスタム AuthorizeAttribute を使用)。 SignalR が発生する前に。

誰でも、完全でありながら簡単なカスタム認証の適切な手順を説明できますか?

4

1 に答える 1

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

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

于 2013-09-06T17:43:43.173 に答える