0

編集-この質問を(うまくいけば)より適切に焦点を当てるために言い直しました。

対話する必要があるコンポーネントは次のとおりです。 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? 質問を投稿した後、その内容を使用しています。

4

1 に答える 1

0

私は自分の質問への回答を投稿して、将来の読者に、他の回答がないことがすでに何を意味するかを確認します-これをしないでください.

私の問題の核心は、匿名プロセス (システム アカウントで実行される Web サイト セッション) が、Microsoft / Active Directory によってサポートされていない方法で受信者 (WCF サービス) に対して識別されようとしていることにあると思います (最もまともなセキュリティでもありません)。戦略家)。通信プロトコルの一部としてではなく、通信のコンテンツ内で ID を渡そうとしました。ネットワークとシステムのセキュリティに関する短期集中コースでは、これは非常に危険な戦略です。

つまり、一方の端では Active Directory (サードパーティ ソフトウェア) に対する認証が必要であり、もう一方の端では匿名性 (Web サイト セッション) が必要です。

今後、考えられる解決策は 2 つあります。通信に関する独自のセキュリティを構築して、Active Directory の名前とパスワードをできるだけ安全に渡すか、サードパーティ ベンダーに認証要件を緩和するよう説得する (チケット エージェントなど)。

于 2013-03-06T15:30:26.140 に答える