アプリケーション バックグラウンド セキュリティ: アプリケーションはすべて、プライベート エクストラネット (および/またはローカル イントラネット - インストール インスタンスに応じて) でホストされます。したがって、セキュリティは重要ですが、イントラネット上のアプリケーションほど重要ではありません。ただし、システムが簡単にハッキングまたはハイジャックされないことが重要であると述べています。
アプリ: アプリケーションは 2 つの部分に分かれています:-
- クラス ライブラリ (dll)
- 認証 フロントエンド ASP.NET アプリケーション
dll はフロントエンド認証アプリケーションの一部であり、ユーザーの認証を必要とする他のアプリケーション (「コンシューマー アプリ」) に追加されます。
認証アプリは、すべてのユーザー、ユーザーがアクセスできるアプリケーション、およびユーザー名に基づくアクセス許可レベルの中央ストアです。
dll がインストールされているコンシューマー アプリの場合、エンド ユーザーがログインを要求するページにアクセスすると、コンシューマー アプリは認証アプリケーションの login.aspx ページを appid と共に起動します。彼らは必要な権限を持っており、認証アプリはそれらを消費者アプリに送り返します(暗号化されたデータを含むフォームを介して)-これには、ユーザーが誰であるか、ユーザー名、実名、職務、組織などに関する基本データが含まれます...そして重要なことにコンシューマー アプリのアクセス許可レベルのリスト。
次に、コンシューマー アプリはそのデータを取得し、処理、復号化などを行い、フォーム認証 Cookie を作成し、ユーザー クラスとユーザー ロール クラスを設定します。これはすべて dll 自体から行われます。
問題
これですべてうまくいき、最初はすべてのデータが認証 Cookie のユーザーデータ部分に保存されていましたが、ここに問題があります....
コンシューマー アプリ (社内で作成された中心的なアプリが 1 つあります。1 人のユーザー (主にアプリケーション管理者) に関連付けられた多くのアクセス許可 (ユーザー ロール) を持つことができるため、大量のデータを保持できるものが必要です。認証 Cookie が保持できる 4KB を超えています。
したがって、これをセッション変数に入れようとしました。最初は、復号化されたデータをすべて「userdata」と呼ばれる単一のセッション変数に送信した単一の変数です。次に、リクエストが行われたときに確認します。
でも...
私が抱えていた最初の問題は、認証 Cookie の寿命がセッションよりも長いように見えることでした。セッションを 35 分 (AuthCookie より 5 分長い) に延長することでこれを修正したと思います。
しかし、コンシューマー アプリ プログラマーがコードを変更し (Visual Studio 2010 を介してデバッグで localhost を実行)、ブラウザーを更新すると、AuthCookie は残りますが、セッションは消えます。最初は、デフォルトの InProc セッション モードを使用していますが、これが問題になる可能性があります。
私の仮定は正しいですか?セッションと AuthCookie をプログラムで同期する方法はありますか?
この問題を解決するための他のアドバイスはありますか?