編集-この質問を(うまくいけば)より適切に焦点を当てるために言い直しました。
対話する必要があるコンポーネントは次のとおりです。 ASP.NET Web サイト <--> WCF サービス <--> サード パーティの Web サービス
サード パーティの Web サービスには、プロキシの構築中にネットワーク資格情報を指定することによる Windows 認証が必要です。例えば:
ICredentials myCredentials = new NetworkCredential("myUsername", "myPassword", "myADdomain");
VendorWebService webService = new VendorWebService {Credentials = myCredentials};
私の知る限り、これは、WCF サービスがユーザーをサード パーティの Web サービスに偽装できる唯一の方法です。Windows 認証 (ネットワーク資格情報経由) は、サポートされている唯一の偽装手段です。サード パーティの Web サービスと WCF サービスの間にある種の信頼を設定する機能はありません。
Web サイトは、個々のユーザーのアカウントではなく、サービス アカウントで実行されます。ユーザーが Web サイトにログインすると、ActiveDirectory で検証しますが、AD を使用して「はい、それは有効な名前とパスワードの組み合わせです」と言うだけです。
Web サイトで知っている情報 (ユーザー名、パスワード) を取得し、それを WCF サービスのネットワーク資格情報に変換する方法が必要です。私が読んだ限りでは、ユーザー名/パスワード、またはネットワーク資格情報オブジェクト (可能であれば) を渡すことは、大きなセキュリティ リスクであり、本当に悪い習慣であると述べています。
Web サイトがユーザーのアカウントで実行されていない場合に、Web サイト ユーザーの Windows ID を WCF サービスで使用できるようにするために、どのようなオプション/手法を使用できますか?
洞察をありがとう。
PS 私はこの投稿を見つけました: How do you pass user credentials from one process to another for Impersonation in .NET 1.1? 質問を投稿した後、その内容を使用しています。