3

を取得し、私は次のようなアーキテクチャがあります。私は私のサーバー側のアプリケーション/ APIのASP.NETを使用していますが、ユーザーが一体化窓」を介して認証されなければならないWindows認証偽装 - 2番目のリクエストが間違ったユーザアイデンティティ

Client1(Browser-App) -> Server1 (WebAPI/IIS) -> Server2 (WebAPI/IIS) 

を認証 "と呼ばれる。

ご覧のとおり、server1からserver2までの2番目のホップがあります。両方のWebAPIが同じサーバー上にない場合、NTMLは第2ホップをサポートしません。 私は "kerberos"をサポートするようにADドメインを設定しました。

これは現在2番目のホップで動作します。 私のテストWebAPIs出力このようなユーザのアイデンティティ:

server1: test.domain/user1 
server2: test.domain/user1 

しかし、私はクライアント1にログイン中のユーザーを変更し、「otherUser2」と同じ要求を実行した場合、最初のホップが正しいIDを取得します:

server1: test.domain/otherUser2 
server2: test.domain/user1 

第2ホップでは、最初の要求の古いユーザーが表示されます。 複数のシナリオをテストしました:次の要求が別のWindowsユーザーと別のクライアントから来た場合、同じ動作...

最初の要求のWindows IDがサーバー2にキャッシュされているようです...これは大きな問題です私にとってはこれが可能ではないはずです...リクエストが間違ったユーザコンテキストで実行された場合、大きなセキュリティホールです!

これは既知の問題ですか?私は間違ったことをしましたか? 解決策またはより良い設定がありますか?私は.NETのWebClientクラスを使用

WindowsIdentity identity = (WindowsIdentity)HttpContext.Current.User.Identity; 

      using (var wic = identity.Impersonate()) 
      { 
       try 
       { 
        WebClient c = new WebClient 
        { 
         UseDefaultCredentials = true 
        }; 
  • :私はこのような偽装を使用する最初のASP.NETのWebAPIの上

  • 両方のIISサーバーには、「ネゴシエーション」と「NTML」が構成された「Windows認証」があります。
  • Server1はDomainController、DNSおよびDHCP-Server(+ IIS)です
  • Server2はIISがインストールされている通常のサーバーです。
  • すべてのコンピュータは同じドメインにあります。

私にこの現象を説明することはできません...私には意味がありません。なぜ最初の着信リクエストのIDを 'server2'にキャッシュする必要がありますか? IISを再起動して別のWindows IDで要求を再実行すると、これが「最初の作業要求」であり、他のユーザーは「server2」でIDを取得します。

+0

info:サーバーは「Windows server 2012 R2」で、IISにはバージョン8があります – user437899

+0

は、user1の下で実行されているIIS AppPoolですか? –

+0

委任権限と割り当てられたSPNを持つ "偽装"ユーザーで実行されている – user437899

答えて

1

解決策/問題が見つかりました。

実際にはキャッシュの問題でした...最初のユーザーの身元がキャッシュされました。あなたは、この "IISの設定" で、この動作を変更することができ :

iis settings

  • をauthPersistNonNTLM
  • authPersistSingleRequest
  • API1で

またはあなたのHTTPクライアントは、TCP-接続キャッシュを無効にすることができます。

  • 接続:閉じる

代わりの

  • 接続:

生きキープしかし、私のシナリオの実際の問題はシオマネキ(HTTPプロキシツール)でした。 API1のweb.configで、フィドラーをプロキシとして設定しました。これにより接続が開いたままになり、最初の身元が再利用されました...

私はこの回答で他の人を助けてくれることを願っています。

関連する問題