【问题标题】:REST or SOAP WCF service on secure internal network NO SSL安全内部网络上的 REST 或 SOAP WCF 服务 无 SSL
【发布时间】:2014-03-06 11:58:34
【问题描述】:

我正在编写的服务有问题。

我们目前有一个托管在内部安全网络上的 web 应用程序。

现在需要提供一项服务,该服务公开我们的网络应用业务功能,供客户使用,以创建原生平板电脑应用。

移动设备将使用 VPN 进入网络。要访问我们的 webapp,用户通常需要使用用户名和密码。 IE。没有 SSL。用户名和密码以自定义设置存储在我们的数据库中(无 ASP 成员资格等)。

现在,我提出了缺少 SSL 的问题,但这个问题已经被否决了,负责这些事情的人觉得进入内部网络所需的安全性已经足够了。

我意识到这意味着应用程序对来自网络内部但应用程序用户组之外的内部用户恶意行为开放

所以,当谈到在 WCF 中创建我的服务时,这会引发一个问题。没有 SSL 的身份验证似乎相当繁琐。我确实设法找到:

[Yaron Naveh 的 ClearUsernameBinding][1] http://webservices20.blogspot.co.uk/2008/11/introducing-wcf-clearusernamebinding.html

我觉得这将解决我所有的问题,直到我意识到我必须改变我的计划以使用 json 提供 RESTful 服务,而我现在必须使用 SOAP。

不过,在我意识到 SOAP 由于数据包附带的信封而导致带宽问题之前,我对此表示满意。这让我很担心,因为它是一项将被超过 3g 的移动应用程序使用的服务,并且存在带宽限制。

那么,如果没有 SSL 是一个选项(请不要说其他),您认为在这里使用 SOAP 而不是 REST 是更好的选择吗?我应该担心带宽吗? (返回的行数不会超过 200,而且大多数会小得多)。我们所说的开销大约是多少?

wcf REST 配置是否有一个选项,我可以在没有证书的情况下进行身份验证(使用某种形式的自定义身份验证)?这对我来说更可取。

【问题讨论】:

    标签: asp.net web-services wcf rest soap


    【解决方案1】:

    Rest vs. Soap. Has REST a better performance? 详细讨论了 REST 和 SOAP Web 服务之间的性能比较。

    您当然可以在 WCF REST 服务中实现自定义身份验证,而无需证书或安全传输。一种选择是使用类似于以下的绑定:

    <bindings>
        <webHttpBinding>
            <binding name="default">
                <security mode="TransportCredentialOnly">
                    <transport clientCredentialType="Windows" proxyCredentialType="Windows"/>
                </security>
            </binding>
        </webHttpBinding>
    </bindings>
    

    http://msdn.microsoft.com/en-us/library/bb924478(v=vs.110).aspx

    包括 Microsoft 警告:“此模式不提供消息完整性和机密性。它提供基于 HTTP 的客户端身份验证。应谨慎使用此模式。它应该用在通过其他方式(例如 IPSec)提供传输安全性并且 WCF 基础结构仅提供客户端身份验证的环境中。”

    以下链接提供了自定义 WCF REST 身份验证解决方案的全面概述: http://www.codeproject.com/Articles/304877/WCF-REST-4-0-Authorization-with-Form-Based-Authent

    【讨论】:

      【解决方案2】:

      WSDL 信封不在兆字节范围内。 每个请求需要几千字节才能进行正常配置。因此,可能的带宽瓶颈很大程度上取决于请求/时间比率

      您始终可以使用令牌实现自定义身份验证机制。基本的想法是这样......

      • 当用户进行身份验证时,他会得到一个 token,如果用户在这段时间内没有采取行动,则会在 20 分钟左右后过期
      • 令牌存储(加密)在客户端 cookie 中
      • cookie用于每个客户端的http请求
      • REST 服务检查用户的 cookie,提取令牌并得出用户是否通过身份验证的结论

      我会强烈建议遵循 Membership API 路径。我描述的逻辑是 Membership API 使用的逻辑。自己实现它只是时间开销和错误生成器。我不明白你为什么要重新发明轮子......

      希望我能帮上忙!

      【讨论】:

        猜你喜欢
        • 2015-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多