2 つの ASP.NET MVC 3 アプリケーションがあります。私は web.config を介して偽装を使用して、Active Directory にクエリを実行してユーザーの詳細を取得できるようにしています。アプリケーションは Windows 認証を使用し、匿名ユーザーを許可しません。1 つのアプリケーションは、ユーザーがタスクを実行する主要なアプリケーションです。もう 1 つは、ユーザーがアプリケーション 1 で他のユーザーのように見えるように設定できるようにするものです。
テスト ユーザーに次のエラーが表示されます。
SQL1092N "<DOMAIN ID>" does not have the authority to perform the requested command.
これは、プライマリ アプリケーションからセカンダリ アプリケーションに Web 要求を送信した後に発生します。それを機能させるには、アプリケーションが偽装に使用する ID ではなく、実際のユーザーを偽装する要求を作成する必要がありました。これは実際に私が投稿して回答した SO の質問です。それはここにあります: WebRequest を介して MVC アクションを呼び出し、Active Directory を介して要求を検証するにはどうすればよいですか?
そのコードの最後で、次のように呼び出します。
impersonationContext.Undo();
この Web 要求が発生した後で、プライマリ アプリケーションがデータベースにアクセスしようとしましたが、上記の呼び出しによってアプリケーションの偽装が取り消されたように見えるため、ユーザーがデータベース接続を開く操作を実行しようとすると失敗します。少なくとも、それは頭をぶつけた後の私の作業理論です.
私の質問は、アプリケーションの偽装を web.config でユーザーに戻すにはどうすればよいですか? または、Web リクエストを作成するときに、偽装コンテキストがそのリクエストにのみ適用されるようにする方法はありますか?
これらすべての要点は、2 番目のアプリケーションが独自の SQL サーバー データベースを持っていることです。プライマリ アプリケーションは DB2 を使用します。一度データベースアクセスコードを書きたいのですが、両方のアプリケーションで使用しています。現在、それは私が行ったことですが、データを取得するために Web 要求に依存する私の方法は、最善の方法ではない可能性があります。
私は、あらゆる考え、コメント、提案、および/または批判を受け入れます。これをどのように処理すればよいですか?