2017-06-22 55 views
0

我試圖讓一個API在服務器A上運行,而不是在域上,調用另一個域上的api B.我使用impersionation進行通話。 B上的api在windows auth下。使用模擬撥打網絡api

爲了測試模擬,我構建了一個小型的Windows實用程序從A(不在域中)運行,並且這可以工作。該模擬使用登錄類型9 https://msdn.microsoft.com/en-us/library/windows/desktop/aa378184%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396

然而,當我運行相同的代碼,但是託管在上的一個IIS的網絡API中,似乎沒有通過來B.

API中的IIS服務器正在運行,使用應用程序池標識在應用程序池下運行。但是,實際向B上的api發出請求的代碼是使用模擬。

A上的應用程序池標識是否會干擾對B的調用?

+0

[mcve]可能會給你一個答案,或者至少張貼一些代碼。 –

+0

你爲什麼不試試?將應用程序池標識更改爲您用來測試該過程並查看其是否正常工作的標識。在過去,您需要回復自己以在模擬之前訪問基礎流程令牌,但我認爲這不會起作用等等。 – Mike

回答

0

您的問題似乎是適當地設置SPN和Kerbros約束委派。 IIS服務器的環境中運行

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

應用不準不管三七二十一企業網絡上的資源。運行在服務器A上的HTTP服務需要設置爲它有權模擬和訪問服務器B上的資源。

當您說服務器A不在域上時,我認爲服務器A在不同的Windows域。爲了允許跨域調用通過,您需要在域之間建立信任關係。

提供對資源的訪問的域必須「信任」消耗資源的域。