Asp.net 安全内部网络上的REST或SOAP WCF服务无SSL

Asp.net 安全内部网络上的REST或SOAP WCF服务无SSL,asp.net,web-services,wcf,rest,soap,Asp.net,Web Services,Wcf,Rest,Soap,我写的服务有问题 我们目前有一个webapp,它托管在一个内部安全网络上 现在需要提供一项服务,公开我们的web应用业务功能,供客户端使用,以便创建本机平板电脑应用 移动设备将使用VPN接入网络。要访问我们的webapp,用户通常需要使用用户名和密码。也就是说,没有SSL。用户名和密码以自定义设置存储在我们的数据库中(无ASP成员资格等) 现在,我已经提出缺少SSL是一个问题,但这一点已经被驳倒,负责这类问题的人认为进入内部网络所需的安全性已经足够了 我意识到这意味着应用程序对来自网络内部但不属

我写的服务有问题

我们目前有一个webapp,它托管在一个内部安全网络上

现在需要提供一项服务,公开我们的web应用业务功能,供客户端使用,以便创建本机平板电脑应用

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

现在,我已经提出缺少SSL是一个问题,但这一点已经被驳倒,负责这类问题的人认为进入内部网络所需的安全性已经足够了

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

因此,在WCF中创建我的服务时,这就提出了一个问题。没有SSL的身份验证似乎相当复杂。我确实找到了:

[Yaron Naveh的ClearUsernameBinding][1]

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

尽管如此,在我意识到SOAP由于数据包随附的信封而存在带宽问题之前,我对此还是很满意。这让我担心,因为这是一项服务,3g上的移动应用程序将使用它,而且存在带宽限制

因此,如果SSL不是一个选项(请不要另外说),您认为在这里使用SOAP而不是REST是更好的选择吗?我应该关心带宽吗?(返回的行数不会超过200,并且大多数都会小得多)。我们大概要谈多少开销


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

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

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

  • 当用户进行身份验证时,如果用户在20分钟左右没有采取行动,他将获得一个令牌,该令牌将在20分钟左右到期
  • 令牌存储(加密)在客户端cookie中
  • cookie用于每个客户端的http请求
  • REST服务检查用户的cookie,提取令牌并判断用户是否经过身份验证
我强烈建议遵循会员API路径。我描述的逻辑是成员API使用的逻辑。自己实现它,只会增加时间开销和bug生成器。我不明白你为什么要重新发明轮子


希望我能帮忙

中详细讨论了REST和SOAP web服务之间的性能比较

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

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

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

以下链接提供了自定义WCF REST身份验证解决方案的全面概述: