2017-06-22 15 views
0

ドメイン上ではなく、サーバーAで1つのAPIを実行しようとしているので、ドメイン上の別のAPI Bを呼び出してください。 Im impersionationを使って電話をしています。 B上のAPIはWindowsの認証下にあります。偽装を使用してWeb APIを呼び出す

偽装をテストするために、私は(ドメイン上ではなく)Aから実行するための小さなWindowsユーティリティを構築しました。これは動作します。私は同じコードを実行しますが、A上のIISでホストされているウェブAPI内で、何もB.

にIISサーバAで実行されているAPIを通ってくるように思われなかったときに偽装が、しかしlogontype 9 https://msdn.microsoft.com/en-us/library/windows/desktop/aa378184%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396

を使用していますは、アプリプールIDを使用してアプリプール内で実行されています。しかし、実際にBのAPIにリクエストするコードは、偽装を使用しています。

AのアプリケーションプールIDがBの呼び出しを妨害することはありますか?

+0

[mcve]さんが回答を得ているか、少なくともコードを投稿している可能性があります。 –

+0

あなたはそれを試してみませんか?プロセスプールのIDを、プロセスのテストに使用したIDに変更して、動作しているかどうかを確認します。昔は、偽装の前にベースプロセストークンに戻るためにRevertToSelfをする必要がありますが、これ以上の効果はないと思います。 – Mike

答えて

0

あなたの問題は、SPNとKerbros Constrained Delegationを適切に設定することにあるようです。 IISサーバーのコンテキスト内で実行されている

https://blogs.msdn.microsoft.com/wushuai/2017/01/13/constrained-kerberos-delegation-with-asp-net/

アプリケーションは、企業ネットワーク上の行き当たりばったりのアクセスリソースに許可されていません。サーバーAで実行されているHTTPサービスは、サーバーBのリソースを偽装してアクセスする権限を持つように設定する必要があります。

サーバーAがドメインに属していないと言うと、サーバーAは異なるWindowsドメイン。クロスドメインコールを通過させるには、ドメイン間に信頼関係が必要です。

リソースへのアクセスを提供するドメインで、リソースを消費するドメインを「信頼する」必要があります。

関連する問題