状況は次のとおりです。
- C#Windowsフォームアプリケーション
- ASP.NETWebアプリケーション
- 両方とも、同じデータベース内のカスタムユーザーテーブル(usename / password)で認証し、両方のアプリケーションで使用されるUserオブジェクトを作成します
ユーザーがWindowsフォームアプリケーションにログインしていて、デフォルトのブラウザー(IE、Chrome、Firefoxなど)でASP.NETWebアプリケーションのページを開くためのURLを起動したいと考えています。ユーザーがWebアプリケーションに個別にログインする必要がないように、現在のユーザー名/パスワードをWindowsフォームアプリケーションからASP.NETWebアプリケーションに渡します。
私たちの調査に基づいて、私たちが見つけたいくつかのオプション(および欠点)は次のとおりです。
- ユーザー名/パスワードをURLでQueryStringsとして渡し、WebアプリケーションでUserオブジェクトを作成します
- 安全ではありません(パスワードはURLに表示されます)
- ユーザー名/パスワードをターゲットURLにPOSTするJavaScriptOnLoad関数を含む一時的なHTMLページをクライアントマシンに作成し、WebアプリケーションでUserオブジェクトを作成します
- (データをURLに直接POSTし、C#を使用してデフォルトのブラウザーでURLを表示する方法が見つかりませんでした)
- 安全ではありません(パスワードは一時ページに表示されます)
- 「Handoff」テーブルを作成して、ユーザー名/パスワードをキーとともに保存します。このキーは、QueryStringを介してページに渡され、ページの読み込み時にテーブルから削除され、WebアプリケーションでUserオブジェクトを作成します。
- キーが傍受される可能性はわずかです(ハッカー)
- Userオブジェクトを格納し、Webアプリケーションで取得する別のMongoDBを用意します
- 実行中の個別のソフトウェア(MongoDB)-追加の障害点
これはすべて、ユーザーが両方のアプリケーションにログインするためにユーザー名/パスワードを2回入力する必要がないようにするためです。
上記のオプションのどれが最も効果的ですか(最も安全で、オーバーヘッド/メンテナンスが最も少ない)?
また
デフォルトのブラウザで使用できるC#アプリケーションでフォーム認証チケット(Cookie)を作成する方法はありますか?
また
これを処理するためのより良い、安全な方法はありますか?
(編集)
また
ユーザーがWindowsフォームアプリケーションからすでに認証されている場合、Webアプリケーションにアクセスするためにユーザーにユーザー名/パスワードの再入力を要求することについての良い議論はありますか?もしそうなら、あなたは参照へのリンクを提供できますか?ベストプラクティス、Webセキュリティ標準など。