SSLを混在させたWebアプリケーション(asp.net 3.5)があります。すべてのアカウント関連のページはSSLで配信されます。ほとんどの場合、他のすべてのページは非SSLで配信されます。 HTTPSとHTTPを自動的に切り替えるには、this componentを使用します。最近、セキュリティで保護されていないWifiネットワーク上でユーザーセッションをハイジャックする機能に関するニュース項目がありました。これは、非SSL接続経由で送信されるCookieをキャッチすることで可能になります。asp.netはrequireSSLを使用し、非SSLページでユーザーが認証されているかどうかを確認することができます
これにより、このWebアプリケーションでセキュリティの選択肢を確認できました。私は(再度)this articleをMSDNから手に入れて、requireSSL = trueプロパティを私のFormsauthenticationに試しました。 Webアプリケーションを起動する前に、この情報を含むCookieがWebブラウザとの間で送受信されないため、非SSLページでUser.Identityがnullになることがわかりました。
私は、SSL接続でユーザーを認証するメカニズムが必要です。非SSLページであっても、この認証情報を覚えています。
SOを検索しているうちに、this postが見つかりました。これは良い解決策だと私には思われます。しかし、Sessionstateにログイン情報を保存する際に解決策が見つかるのだろうか?私はGlobal.asaxでApplication_AuthenticateRequestをキャッチすることを考えています。接続が安全かどうかを確認し、authcookieまたはSessionをチェックします。私はこれをまだどのように実装するのか正確にはわかりません。多分あなたは私と一緒にこれについて考えることができますか?
こんにちはブラッド、ご返信ありがとうございます。 httpとhttpsを混ぜる理由は2つあります。第1に、画像も電子メールメッセージに配信されるアプリケーションです。 HTML電子メールメッセージで使用されるイメージは、互換性の問題によりHTTPS経由で送信されない方が適しています。また、非SSL接続を介してこれらの画像を提供するため、アプリケーションに混在コンテンツを許可するかどうかを尋ねるポップアップがアプリケーション内に表示されます。メッセージされた電子メールのこれらの同じ画像は、アプリケーション内で使用されます。 – JonHendrix
第2に、資産(CSS、JS、画像など)はSSL経由で配信されるときにキャッシュされません。つまり、毎回のリクエストが毎回多くのアセットを送信します。これは若干の再調整と最適化を行うことで解決することができますが、ほとんどのリソースをキャッシュすると、アプリケーションが応答してよりうまく動作すると思います。 – JonHendrix
私は実際にはアセットではなくアプリケーション自体について話しています。 SSLと非SSLの両方でイメージを提供できることは大きな問題ではありません。サービスされているSSL以外のイメージでは、電子メールメッセージに埋め込まれているため、認証する必要がないと推定されます、私は彼らがないと推測している)。 –