首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

Wcf服务的安全性解决方法

2012-05-08 
Wcf服务的安全性实现网络通信时可以使用“WCF”。实现过程:通过“asp.net站点”将“WCF”服务发布出去,然后被“客

Wcf服务的安全性
实现网络通信时可以使用“WCF”。

实现过程:
  通过“asp.net站点”将“WCF”服务发布出去,然后被“客户端”调用,就可以实现网络通信

那岂不是,如果别人知道“WCF”服务的地址,也可以使用了???调用其中的方法,然后就可以修改服务器上的数据了。

这样“WCF”岂不是存在安全隐患?

比如,使用WCF向“Silverlight”客户端公布数据。

[解决办法]
等你们回答我来看结果
[解决办法]
可以在数据库加一个字段存放分配给客户的密钥,每次调用WCF方法必须提交一个密钥,合法即可访问,不合法即拒绝返回数据。
[解决办法]
WCF 安全模型十分强大。。。Windows认证,用户/密码, X509证书... 建议看看msdn。

http://msdn.microsoft.com/zh-cn/library/ms731925.aspx
[解决办法]
一般使用用户名+密码的方式验证,你开发的方法增加2个参数,让调用方传递用户名和密码进去,每次调用都验证。
[解决办法]
其它方法也有,有个特殊点的,通过SOAP头来传递验证信息,先通过登录方法,验证身份通过后,传递给用户一个当前有效的会话ID,然后用户本地缓存,添加到SOAP头,每次发送任何请求都附带这个SOAP头的信息,这样服务端检验SOAP头部是否是有效的会话ID就可以验证身份了。
[解决办法]
可以,这个SOAP头信息是在客户端添加的,当然,如果客户端直接用IE访问,肯定是没法添加了,必须用.NET程序来添加(其它语言的程序是否可以不知道,反正符合SOAP规范定义的)。
下面提供一种实现方式:

C# code
    public class ContextHeader : IClientMessageInspector    {        public void AfterReceiveReply(ref System.ServiceModel.Channels.Message reply, object correlationState)        {        }        public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel)        {            MessageHeader clientHeader = MessageHeader.CreateHeader("LoginID", string.Empty, DataManager.loginid);                       request.Headers.Add(clientHeader);            return null;        }    }
[解决办法]
http://blog.csdn.net/fangxinggood/article/details/6144893
[解决办法]
探讨

http://blog.csdn.net/fangxinggood/article/details/6144893

热点排行