【发布时间】:2021-05-14 09:17:44
【问题描述】:
这可能是一个非常简单的问题,但(我认为)解释起来很复杂,请多多包涵。
我们的服务器上有一个 WCF API(用 C# 编写),它附加到第三方 API(如果你愿意的话,这是一种一站式的地方)。这些混合使用 OAuth 和证书来确保安全。我们的想法是,我们不必将(第三方)证书/安全性放在我们所有的服务器上,只需一个。
因此,计划是让一台服务器上的应用程序调用该服务器上调用第三方API的API。这似乎适用于除一个第三方之外的所有第三方。
如果我在我们的 API 上使用 Visual Studio (2017) 内置的 WCF 测试客户端,它可以正常工作。如果我尝试从另一个应用程序使用我们的 API(通过添加服务引用)即使在同一台服务器上,它也会失败并显示上述消息。
我们的 API(尚未)使用 https。
该计划用于将我们的 API 发布给其他人,因此我们不能与他们共享任何证书/登录名 - 这是我们 API 的根本原因。
我已经对此进行了很多谷歌搜索,所有答案似乎都指向证书必须在调用应用程序上,这似乎会破坏我们的“catch all”API
我可能没有很好地解释这一点 - 抱歉。也许这个问题可以概括为“如何阻止安全性被“传递”给调用应用程序?”
【问题讨论】:
-
没有看到您使用客户端和服务器端的实际绑定,就没有更多的猜测了。也许这有帮助:stackoverflow.com/questions/4463485
-
谢谢 rene。正如我在帖子中所说,“我做了很多谷歌搜索”,这是我发现的帖子之一“这似乎表明证书必须在调用应用程序上”
-
这不是我们这里需要的
-
我无法访问您已经在 Google 上搜索的内容。那么,您在客户端和服务器上使用的绑定是什么?您是否在 IIS 中托管?如果涉及证书,它是自签名的吗?证书是否在所有必需的证书存储中,例如在本地机器上,但也可能在运行 apppool 的身份上。
-
你指的是哪个绑定?应用程序上的那个还是第三方“我们的”API 上的那个? “我们的”API 托管在我们服务器上的 IIS 中。证书(在“我们的”API 和第三方之间 - 根据我的原始帖子,应用程序和“我们的”API 之间没有证书)由第三方正式签署。由于(根据我的原始帖子)WCF 测试客户端可以正常工作,因此证书已正确安装。