使用模拟调用web api

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用模拟调用web api相关的知识,希望对你有一定的参考价值。

我试图在服务器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的调用?

答案

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

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

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

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

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

以上是关于使用模拟调用web api的主要内容,如果未能解决你的问题,请参考以下文章

使用 Javascript 模拟 API 调用

Dynamics CRM 2015/2016/365 Web API:用户模拟

如何在 JEST 中使用配置模拟 API 调用?

使用 MockWebServer 模拟嵌套的改造 api 调用

使用 MockWebServer 模拟嵌套的改造 api 调用

Dynamics CRM 2015/2016/365 Web API:用户模拟