【问题标题】:Authenticate a Client connecting to a web service验证连接到 Web 服务的客户端
【发布时间】:2009-04-23 01:25:15
【问题描述】:

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

if (IsClientValid(...) == false) 返回;

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

谢谢

【问题讨论】:

    标签: wcf web-services


    【解决方案1】:

    根据您想走多远,您可以做很多事情。在我开发的一个应用中,我们做了以下事情:

    • 消息安全 - 要加密您的消息,客户端必须提供凭据 (userNameAuthentication),服务器提供 serviceCertificate 用于消息加密。

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-19
        • 1970-01-01
        • 2010-11-17
        • 1970-01-01
        • 1970-01-01
        • 2020-10-23
        相关资源
        最近更新 更多