繁体   English   中英

验证连接到Web服务的客户端

[英]Authenticate a Client connecting to a web service

我有一个WCF Web服务。 该Web服务应仅允许某些客户端应用程序(使用Silverlight,Flex,ClickOnce等技术构建)执行其功能。 为了实现此目的,我使用以下代码启动了每个公开可见的方法:

如果(IsClientValid(...)== false)返回;

我的问题是,我应该检查什么? 我考虑过将唯一标识符作为字符串参数传递,然后将该参数传递给IsClientValid方法。 但是,我知道有人可以使用Fiddler之类的工具来嗅出该参数值,并将其用于自己的应用程序中。 我如何唯一地标识我的客户端应用程序,以便只有它们可以使用我的WCF Web服务?

谢谢

根据您想走多远,您可以做很多事情。 在我开发的应用程序中,我们执行了以下操作:

  • 消息安全性-要加密您的消息,客户端必须向服务器提供凭据(userNameAuthentication),而服务器必须提供serviceCertificate来进行消息加密。

  • 自定义加密的Soap Header用于在初始登录后为客户端提供每条消息的详细信息。 该头使用在初始调用中从客户端应用获取的值和从服务器获取的值的组合进行加密。

  • 所有客户端传出消息都附加了加密的标头,服务器在接收到该标头后就提取/解密该标头,并且基本服务会验证是否存在所需的值。

  • 除此之外,服务器端还存储了一组加密的标头,以防止使用嗅探标头进行重放攻击。

如果您认为可以使用其中的一些资源,那么我可以提供其他资源/链接以说明如何实现这些目的。

编辑:假设客户端应用程序在您的控制之下。

查看客户端证书身份验证 基本思想是,除非客户端发送有效的证书,否则https连接将失败,您可以在该证书中确定有效的证书。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM