2011-10-28 21 views
4

HttpListenerの周りに自己ホスト型Webページを構築する場合、どのように安全に認証を処理できますか?資格情報をクリアテキストとして渡すので、基本認証は使用しません。私は HttpListenerに基づく自己ホストサイト - 認証の処理方法?

 listener = new HttpListener(); 
     listener.Prefixes.Add(url); 
     listener.AuthenticationSchemes = AuthenticationSchemes.Digest; 
     listener.Start(); 

はそれが十分に確保され、ダイジェストが別のオプションであることを知っていて、実際にユーザー名/パスワードをつかみ、それらを認証するための標準/ベストプラクティスは何ですか?

この状況では、デフォルトでweb.configまたはホスティング環境はありません。

+0

HTTPS/SSLを使用するのがベストプラクティスです。あなたはIISを避け、独自のWebサーバーをコンポーネントのように作っていますか?私はなぜ好奇心のために尋ねることができますか? :) –

+2

私は、反応的な拡張機能とイベントループ(node.jsの動作方法など)を使用して、多量のイベントドリブンでリアルタイムのWebアプリケーション(チャットサーバーを想像していますが、より多くの機能を備えています)に取り組んでいます。たぶん私は何らかの点で何とかIISに統合するだろうが、今は単なる骨なしプロジェクトだ。 HttpListenerで設定可能なSSLを使用する限り、ユーザーの資格情報を処理するのはどうですか? –

+0

WinFormsアプリのようなIISを必要とせず、Webインターフェイスを公開することができるアプリで、Webブラウザを使用してアプリにアクセスできる理由を想像するのは簡単です。 –

答えて

2

HttpListenerで認証を使用するということは、Windowsに組み込まれている認証システム(ActiveDirectory)を使用して認証を行うことを意味します。これは、ダイジェスト認証のために、ユーザーのドメインアカウントを作成する必要があることを意味します。これはあなたが意図したものですか?独自のカスタム認証を行う場合は、それはより複雑な問題です。あなたがしたいことを言っていない限り、私はそれを行う方法には進まないでしょう。

+0

ありがとうございます。私は、少なくとも今のところ、ダイジェストを使う可能性が最も高いです。私はそれが十分に安全かどうかについて懸念していました。ダイジェスト認証とアクティブディレクトリを使用する方法を説明するリンクを知っていますか?それとも消化するのか? –

+0

出荷時。おおまかなことは、HttpListenerを設定して匿名認証を許可しない場合、HttpListenerは認証されていないユーザーに401を返し、ヘッダーは認証プロトコルを開始します。ブラウザがログインダイアログをポップアップ表示します。ユーザーが資格情報を入力します。サーバーはActiveDirectoryを使用してユーザーを認証しようとします。資格情報は有効でなければなりません。アカウントにはこの方法でログに記録する必要があるアクセス許可が必要です(どのアクセス許可が必要かはわかりませんが、どこかで文書化されています)。 –

+0

あなたのコードは要求をまったく見ませんユーザーが認証されるまで –

1

私はクレームベースのセキュリティのサポートを実装することを検討します。セキュリティトークンを処理する必要がありますが、実際のユーザー認証は外部IDプロバイダーに委託することができます。

ほとんどの作業を処理するためにWindows Identity Foundation(WIF)を利用する可能性があります。

関連する問題