我们现在做的系统里面大量使用了Web Services,采用的是WinForm调用Web Services的方式。但是这样存在一个问题是,我们没有对调用Web Services进行安全认证。也就是只要知道Web Services的地址就可以调用它。而在添加Web 引用的时候,引用地址自动写在App.config里面了。用户只要打开App.Config就可以看到地址,从可以调用相应的操作。
问题:我怎样对调用者进行认证,没有权限的不能进行调用。
另外一种解决方法就是不暴露Web Services的地址。但是程序自动把地址写到了app.Config里面了。那我怎样对其隐藏呢?如果对app.config进行加密,加密后,里面的地址还能自动识别吗?
Web Service 安全解决方案很多,总体来分,
1.借助IIS的安全机制(操作简单,和管理网站类似)
2.SOAP消息自带用户名密码,服务端进行加密解密,缺点就是密码用以截获,可以伪造。
3.就是借助WSE3.0,它提供了更加丰富的安全策略和配置方案。应该可以满足你的要求。
补充一下:
我的博客里有关于Web Service和WSE3.0构建Web 服务安全的系列文章。基本都给出了详细的概念介绍和开发配置过程。还有部分示例代码,可以参考。
2.WSE3.0构建Web服务安全(1):WSE3.0安全机制与实例开发
希望对你有所帮助~
这个还是有几种解决方法的:
1、config文件的内容是可以写到注册表的
2、自己实现一套认证机制,通过扩展SOAP头来带上身份认证,可以包括用户名和密码,再加上时间戳防重放,加上哈希防篡改
3、使用Web Service证书,在客户端安装后进行证书型的认证,比较知名的有X509等
最简单的方法就是让你的Web Service开启Windows身份验证,IIS上用集成身份验证。然后把允许访问的用户列表放到服务器段(在域里面的话可以直接用用户组)。
客户端调用的时候带上Credentials就行了。
调用的人能够确定的话,也可以 限制IP