WCF不使用证书,怎样验证客户端?

TryToday 2014-05-03 05:41:57
经过自己测试,如果使用证书来验证客户端,貌似不能发布成软件,只能测试通过。
那么能不能不采用证书,而用其他方式验证客户端,来建立连接后,执行服务端的WCF功能呢?

想达到的效果:
1、不希望直接公开WCF的功能,不经过任何授权都能访问,这样不安全。
2、有一种笨办法是每次访问WCF的功能,都把验证的信息传进去。这样验证太频繁,并且WCF功能都要增加没有业务含义的验证参数。
...全文
1904 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
游戏人间 2016-10-07
  • 打赏
  • 举报
回复
WCF利用消息拦截,在消息头中进行认证的例子。 http://download.csdn.net/detail/wonderfuly/9646718
緣木求魚 2016-10-02
  • 打赏
  • 举报
回复
引用 13 楼 wonderfuly 的回复:
用消息头,可以验证
消息头是明文的呀,一下就看出来了。
游戏人间 2016-09-27
  • 打赏
  • 举报
回复
用消息头,可以验证
黏糊 2015-02-25
  • 打赏
  • 举报
回复
我也在头疼这个问题
MASD 2014-05-07
  • 打赏
  • 举报
回复
这是很多WCF初学者感兴趣的问题,求专家指导。题目就是:不使用证书,如何形成安全会话,使得客户端或服务端不用传递用户名和密码(只需要第一次连接的时候传递), 对方就能知道发送方的身份。
TryToday 2014-05-05
  • 打赏
  • 举报
回复
感谢楼上,看了下提供的例子貌似也需要证书。证书方式是无法调过的吗?
zhujiazhi 2014-05-04
  • 打赏
  • 举报
回复
WCF支持username/password的验证方式,客户端在连接wcf的时候提供正确的用户和密码才能连接得上,这样使用连接上的就不用每次都传客户信息的 http://www.codeproject.com/Articles/96028/WCF-Service-with-custom-username-password-authenti
  • 打赏
  • 举报
回复
WCF可以支持SessionID(只要你使用特定接口的)。 关键是你要做的事情很简单,那么它没有的功能,你动手写上几十行代码让你所有的服务都可用利用上它不就行了嘛。
TryToday 2014-05-03
  • 打赏
  • 举报
回复
感谢楼上这些回复,如果我和您知识总量是一样多,我可能就没有疑问了。现在还没有用WCF做过实际程序,而是实验和学习,应该无法理解“通道的机制到底是什么” 对了补充下,现在开发的是WinForm软件,希望在互联网和局域网都能运行。
TryToday 2014-05-03
  • 打赏
  • 举报
回复
自己写代码是可以实现的,但是我希望WCF自身已经实现了这些,这样就不用每个WCF服务都增加一个客户端ID的参数了,类似多个WCF服务: 查询商品(客户端ID,商品ID) 销售商品(客户端ID,商品ID,数量) 查询顾客(客户端ID,顾客ID) 希望变成简洁的WCF服务: 查询商品(商品ID) 销售商品(商品ID,数量) 查询顾客(顾客ID) 目前使用通道方式已经做到了上面的效果,只是他需要证书,而目前查到的资料,证书需要付费购买,我觉得微软不会这么不开放吧,所以寻求其他的解决方式。或者不用证书,或者用自定义的证书。
  • 打赏
  • 举报
回复
LoginInfo x = (LoginInfo) dictionary["238949skdfkaskf2893rsdfka"];
if(x==null)
    throw new Exception("请首先注册会话。");
else 
   ........
其实“验证”说的就是通道。只不过你不去解答出“通道的机制到底是什么”,所以总是停留在抠字眼上。
  • 打赏
  • 举报
回复
你根本没有说出你的“验证”是什么意思。唉算了,我给你多说两句吧。 假设你为客户端分配了一个编号,例如叫做 238949skdfkaskf2893rsdfka,通过这个编号就可以取出用户登录信息,例如
LoginInfo x = dictionary["238949skdfkaskf2893rsdfka"];
那么这有什么“笨”的?你还能有更聪明的办法么? web是无状态、短连接的。这是起码的机制。所谓“通道访问”你能拿出稍微深入一点的设计来么?如果能够,你能连一个这样的编号都没有吗? 设计一个东西可以有各种创意,但是不应该停留在“听上去挺厉害的标题上”而不分析其内部机制。
TryToday 2014-05-03
  • 打赏
  • 举报
回复
“验证太频繁”,是说我那种笨办法,每次调用WCF都验证,比如查询商品验证,然后查询商品图片也验证,查询总金额又验证。我希望的是验证一次以后形成通道,然后用通道访问WCF函数,通道访问就不需要验证了。
  • 打赏
  • 举报
回复
“验证太频繁”是什么意思?你不需要验证客户端已经登录? “没有业务含义的验证参数”是什么意思?你不需要能够索引客户登录信息的验证信息?

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧