使用模拟拨打网络api
问题描述:
我试图让一个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的调用?
答
您的问题似乎是适当地设置SPN和Kerbros约束委派。 IIS服务器的环境中运行
https://blogs.msdn.microsoft.com/wushuai/2017/01/13/constrained-kerberos-delegation-with-asp-net/
应用不准不管三七二十一企业网络上的资源。运行在服务器A上的HTTP服务需要设置为它有权模拟和访问服务器B上的资源。
当您说服务器A不在域上时,我认为服务器A在不同的Windows域。为了允许跨域调用通过,您需要在域之间建立信任关系。
提供对资源的访问的域必须“信任”消耗资源的域。
[mcve]可能会给你一个答案,或者至少张贴一些代码。 –
你为什么不试试?将应用程序池标识更改为您用来测试该过程并查看其是否正常工作的标识。在过去,您需要回复自己以在模拟之前访问基础流程令牌,但我认为这不会起作用等等。 – Mike