2009-03-17 8 views
3

私は一度サインインしたWebアプリケーションを使って、ほぼすべてのページをパーソナライズします。いくつかのSSLページでパーソナライズされたASP.NET Webアプリケーションを使用することは可能ですか?

私は、機密情報が含まれている可能性のあるSSLでロックされた非常に特定のページを持つことができるようにします。私が見つけたことから、一度SSLサインインページ(Webサイトのエリア)を介してサインインすると、多くのパーソナライゼーションとユーザーの資格情報を保存するために使用するセッション情報は、SSL以外の部分では利用できません2つの別々のアプリケーションとみなされているためです。 MSDN Doc

注:

このMSDNのドキュメントはかなり私が何を言っているかと言いますが、サイト構造のこのタイプを使用する場合、アプリケーションは非SSLページでのユーザーのIDに依存してはいけません。上記の構成では、SSL以外のページの要求に対してフォーム認証チケットは送信されません。その結果、ユーザーは匿名とみなされます。これは、ユーザー名を必要とするパーソナライゼーションなどの関連機能に影響します。

私もフォーム認証を使用していません。ユーザーがセッションにサインインすると、オブジェクトにはIPを含む資格情報が保存されます。このセッションオブジェクトが同じIPを持つ特定のユーザーに対して存在する場合、「サインインされた」とみなされ、パーソナライズ機能が有効になります。

私の質問は、私のサインインページと他のいくつかのページがSSLを使用していて、サイトのリセットがなく、すべてのページが同じセッション変数にアクセスできるということです。

誰も同じタイプのパーソナライゼーション機能を達成するための他の方法を提案できない場合は、

答えて

0

SSLが必要な数ページでSSLを使用しないことに決めました。私たちは、同様のことを行い、SSLを使用しない他のWebアプリケーションを検討しました。とにかく悪意のあるユーザーが盗んでしまうのを防ぐのに役立つものを実際には保護しているわけではありません。

SSLを削除することが決定される前に、ユーザーのセッションをアプリケーションのWebサービスインターフェイスに保存することを検討しました。すべてのページ呼び出しは、Webサービスにアクセスしてセッション情報にアクセスします。これは、セッションがアクティブなままであることを保証するために、すべてのページ呼び出しで強制されます。私は、SSL解決策が作られる前に、このソリューションを使用することに関してあまり徹底的な調査をしていなかったので、このソリューションに多くの問題が生じる可能性がありました。特に、すべてのサーバーがヒットしたときにWebサービスを余分に呼び出す必要がありました。

1

コメントはありませんので、私は丁寧で実用的なソリューションを提供すると思いました。

フォーム認証構成ブロックでRequireHTTPSをオフのままにします。

次に、IHttpModuleを実装するカスタムクラスを作成します。このインターフェイスには、HTTPApplicationインスタンスを引数として取るInitメソッドがあります。このインスタンスの "AuthenticateRequest"イベントにアタッチできます。

ここから、SSLを使用せずに入ってきたリクエストを302リダイレクトすることができます。おそらくweb.configのカスタム設定セクションからSSLを必要とするページを動かすことになります。

リクエストにこのクラスを使用するには、web.configのHttpModulesセクションに行を追加する必要があります。

1

まず、このコードプロジェクトの記事をご覧ください:http://www.codeproject.com/KB/web-security/WebPageSecurity_v2.aspx - 特定のページでhttpsを「ステップして」離れることができます。

セッションの問題に関して、私はあなたがちょっと固まっていると思います。標準フォーム認証メカニズムは、httpまたはhttpsで利用可能な認証されたセッションを識別するためのクッキーを格納します。私の助言は、フォーム認証を使用するに切り替えると、あなたのセッションごとのデータにアクセスするためのキーとしてProviderUserKey GUIDを使用することです。

これが役に立ちます。

関連する問題