リモートDBを管理するために小さなRESTサーバーを実装する必要がありますが、特別なことは何もありません。このサーバーはイントラネット環境で実行する必要があるため、セキュリティは重要な問題ではありません。ユーザーをフィルタリングして適切なリソースにリダイレクトするだけです。
HttpListener listener = new HttpListener();
listener.Realm = "testserver1";
listener.AuthenticationSchemes = AuthenticationSchemes.Basic;
foreach (string s in prefixes)
{
listener.Prefixes.Add(s);
}
listener.Start();
Console.WriteLine("Listening...");
HttpListenerContext context = listener.GetContext();
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
string responseString = "<HTML><BODY>" + DateTime.Now.ToString() + "</BODY></HTML>";
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
response.ContentLength64 = buffer.Length;
System.IO.Stream output = response.OutputStream;
output.Write(buffer, 0, buffer.Length);
output.Close();
listener.Stop();
このコード (Microsoft のサイトから取得) はサーバー側から完全に機能し、listener.GetContext()が返されたときに、User オブジェクトからユーザー名とパスワードを確認し、リクエストの処理方法を確立できます。最初のlistener.AuthenticationSchemes = AuthenticationSchemes.Basicを変更します
listener.AuthenticationSchemes = AuthenticationSchemes.Digest
期待どおりに機能しなくなり、基本認証スキーマが効果的に機能しなくなります。listener.GetContext()呼び出しは戻りません。HttpListener はすべてのリクエストをブロックするように見え、クライアント側からは引き続きユーザー名とパスワードの入力を求められます。ローカル ユーザー、ローカル管理者、ドメイン ユーザー、ドメイン管理者、約 500 のファンタジー名を試しましたが、何も機能しません。GetContext() はもう戻りません。手伝って頂けますか?
前もって感謝します。
L.