asp.net webservices身份验证/授权

时间:2012-01-30 06:09:58

标签: asp.net web-services

我们公司有2个面向公众的互联网服务器。 (serverA.mycompany.com& serverB.myCompany.com)

我们正在其中一个服务器上托管一个asp.net Web服务(.asmx),这些服务器暴露在互联网上。我们需要进行身份验证/授权(不使用密码/ Windows身份验证)并且只允许来自“* .myCompany.com”的请求

不幸的是,这些机器的IP地址并不是静态的。它们会在6个月左右的时间内保持不变。因此,基于IP的访问不是我们的解决方案。

请帮助我仅允许来自“* .myCompany.com”的请求

1 个答案:

答案 0 :(得分:1)

您无法根据主机名知道客户端是谁。您需要让客户端进行身份验证(通过SSL,以确保安全),或者至少签署发送的内容。

如果您对“签名”感到好奇,我在答案中的一个简单示例中对其进行了描述:C# app should send some data to php website but should respect auth policies

如果你可以在asmx方面设置SSL证书,即使硬编码“秘密”(例如密码,在两个应用程序之间保持安全和保密)也可以解决问题。

否则,也许您可​​以使用asmx查询DNS来获取客户端的IP地址,然后与传入的请求进行比较。这意味着,您无法通过IIS级别的IP限制 - 您必须在asmx中进行验证。您可以在第一次请求时执行此操作一次,然后保留在内存中直到它停止工作(或直到它变得不同),然后再次查询DNS。也许甚至将这个IP保存在某个更永久的地方(例如数据库),因为IP不会经常改变。