我有一个需要限制访问的C# .net .net服务。我已经要求我的消费者使用用户名和密码来调用服务。但是,有没有办法限制对实际asmx页面和WSDL的访问呢?我需要通过用户名/密码和IP地址限制对and服务的访问。如果用户没有正确的凭据,我不想让他们知道what服务中存在哪些webmethods。
这可以通过IIS完成吗?我知道我可以通过IIS限制IP地址,但我还可以使用用户名/密码吗?
在IIS之外,有没有其他方法可以做到这一点,比如使用C#.net?
发布于 2009-09-09 15:20:41
可以通过从Machine.config中的元素中删除文档协议来停止显示WSDL
更新:Web Services authentication - best practices?如果你的用户有用户名/密码,你可以通过HTTPS使用HTTP basic认证。
你也可以用一种稍微不同的方式来实现它。对web服务的第一个调用应该是身份验证方法。客户端进行身份验证并接收身份验证令牌。此令牌应呈现给您的web服务公开的所有其他方法。
发布于 2009-10-22 03:39:27
我不知道这对你有多实用,但你可以考虑升级到WCF。WCF与ASMX web服务完全向后兼容,并允许您通过定义MEX (元数据交换)端点来控制是否公开WSDL。没有MEX终结点,没有WSDL。
发布于 2009-10-22 13:00:21
有两个选项:在不同的端口上创建一个完全不同的站点,并锁定权限。这样做的好处是提供了一定程度的“模糊的安全性”(半开玩笑……)或者,您可以在您的站点(相同的端口,不同的路径)下,在不同的应用程序池中添加一个新的应用程序,并以这种方式分配权限。
在任何一种情况下,您的web服务都不能与各种应用程序“事物”进行对话,比如应用程序对象(不错,但它不是同一个ASP.NET对象)。部署只是稍微困难一点:部署相同的二进制文件,但只包含一个web服务文件。
https://stackoverflow.com/questions/1400198
复制相似问题