代码之家  ›  专栏  ›  技术社区  ›  Simon_Weaver

我可以通过什么方式向拥有服务URL的最终用户隐藏WSDL?

  •  0
  • Simon_Weaver  · 技术社区  · 16 年前

    我有一个.NET Web服务,它是公共可访问的,因为它需要通过 Flex . 它当前只有读取操作。

    http://www.example.com/webservices/weather.asmx?wsdl

    我想向同一个Web服务添加一些仅管理的Web方法,例如 UpdateWeather StartRainstorm . 显然,我不希望我的最终用户能够改变天气模式。

    所以我只想隐藏WSDL,这样就不能通过标准访问它。 ?wsdl 参数。最终我会增加更好的安全性等,但现在我需要一个快速的解决方案。我想如果他们不知道方法名,他们就无法访问它。

    我希望能够禁用WSDL生成-我可以通过添加 <add name="Documentation" /> 到我的web.config。但我希望能够以其他只有我知道的“秘密”方式访问WSDL,这样我就不必一直访问服务器。我怎么能做到这一点。如果它是一个秘密的URL或者一个秘密参数或者其他什么的话,我就可以了。

    我很喜欢这个 security through obfuscation 现在接近。

    3 回复  |  直到 13 年前
        1
  •  1
  •   Eric Schoonover thSoft    16 年前

    您可以做的一件事是为管理契约公开另一个端点。然后关闭该管理端点上的WSDL发布服务器。最终,如果需要,您可以在管理端点上配置安全性。

    这是假设您正在使用WCF。

    更新: 看看这个 WCF getting started tutorial . 一旦您了解了WCF的一些知识,您就会喜欢它而不是ASP.NET/ASMX服务。

        2
  •  1
  •   IEnumerator    16 年前

    为什么不创建另一个Web服务?似乎更简单

        3
  •  0
  •   Rafael Diego Nicoletti    13 年前

    对于更新引用,可以使用开发服务器。 除非提供公共访问,否则生产服务器无法公开WSDL文档。

    或者,如果您有权访问wcf程序集,则可以对wcf程序集使用svcutil。这将生成应用程序中要使用的语言代码。

    如果您真的非常希望将WSDL公开给有限的用户,那么可以使用IIS URL重写来阻止未经授权的IP地址的访问。