使用模拟调用web api

问题描述 投票:0回答:1

我试图在服务器A上运行一个api,而不是在域上,调用域上的另一个api B.我正在使用impersionation打电话。 B上的api在windows auth下。

为了测试模拟,我构建了一个小的Windows实用程序,从A(不在域上)运行,这是有效的。模仿是使用logontype 9 https://msdn.microsoft.com/en-us/library/windows/desktop/aa378184%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396

但是,当我在A上运行相同的代码但在iis上托管的web api中时,B似乎没有任何内容。

IIS服务器A中运行的api使用应用程序池标识在应用程序池下运行。但是,实际向B上的api发出请求的代码正在使用模拟。

A上的应用程序池标识是否会干扰对B的调用?

c# security asp.net-web-api2 windows-server-2012
1个回答
0
投票

您的问题似乎是适当地设置SPN和Kerberos约束委派。

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

在IIS服务器上下文中运行的应用程序不允许无情地访问公司网络上的资源。在服务器A上运行的HTTP服务需要以有权模拟和访问服务器B上的资源的方式进行设置。

当您说服务器A不在域上时,我假设服务器A位于不同的Windows域上。为了允许跨域调用通过,您需要在域之间建立信任关系。

提供对资源的访问的域必须“信任”使用该资源的域。

© www.soinside.com 2019 - 2024. All rights reserved.