basicHttpBinding是将.Net 2.0客户端连接到WCF服务的唯一选项吗?

时间:2008-10-24 19:03:59

标签: .net wcf security .net-2.0

这是question的后续内容。我试图避免使用x509证书方法,因为这使我的客户端安装更复杂。如果basicHttpBinding不是唯一的选项,那么其他绑定方法的一些示例。

我的客户端使用.Net 2.0,我无法访问System.ServiceModel命名空间,因为直到3.0才出现。

更新:要清楚,            客户:.Net 2.0,            网络服务:.net3.5 / WCF

2 个答案:

答案 0 :(得分:3)

问题不在于.Net 2.0服务和WCF以及各种绑定之间的不匹配 - 它们(有一些值得注意的例外,在你的情况下不应该是一个问题)非常兼容的协议。

WSE 3.0(在2.0 .Net框架上运行)特别接近。你可以使用basicHttpBinding或wsHttpBinding和一些调整。 'Jimmy'Skowronski的文章here和MSDN文章here涵盖了大部分基础知识。

您还可以编写一个自定义绑定代码,以便让您支持WSE和WCF之间的一些不兼容性(就像使用WCF和基本身份验证时安全传输的要求一样)

我理解的问题是如何管理身份验证 - 在上一个问题中,您排除了Windows身份验证。 Kerberos在WCF或WSE中都可以工作,但这更复杂。

除非您深入研究自己的身份验证方案,否则您(据我所知)仅限于使用基本身份验证(因此每个客户端都会提供用户名或密码,根据您的需要,这可能对所有客户端都相同)或证书认证。

Toran的回答是使用基本身份验证的良好启动。

我认为可能一个好的方法是首先查看.Net 2.0(和WSE *)方面的要求 - 建立适合您的客户端部署的认证机制,然后确定如何接受该认证与WCF。

WCF几乎可以接受WSE 3.0可以发送的任何内容(除了我能想到的唯一例外是寻址规范的版本,以及一些稍微严格的安全要求)

答案 1 :(得分:1)

您可以使用basicHttp。

来要求SSL +用户名/密码

首先,以下是您的客户端将在.NET 2.0中使用您的WCF服务进行身份验证的内容。

Dim client As WebServiceClient = New WebServiceClient("basicHttpWebService")
client.ClientCredentials.UserName.UserName = "username"
client.ClientCredentials.UserName.Password = "password"

接下来,您的WCF服务的示例配置需要SSL +成员资格提供程序凭据

       <bindings>
            <basicHttpBinding>
                <binding name="basicHttp">
                    <security mode="TransportWithMessageCredential">
                        <transport/>
                        <message clientCredentialType="UserName"/>
                    </security>
                </binding>
            </basicHttpBinding>
        </bindings>
        <behaviors>
            <serviceBehaviors>
                <behavior name="NorthwindBehavior">
                    <serviceMetadata httpGetEnabled="true"/>
                    <serviceAuthorization principalPermissionMode="UseAspNetRoles"/>
                    <serviceCredentials>
                        <userNameAuthentication userNamePasswordValidationMode="MembershipProvider"/>
                    </serviceCredentials>
                </behavior>
            </serviceBehaviors>
        </behaviors>

我唯一不确定的是,要使用客户端应用程序中的第一部分,您可能需要安装WCF / WPF扩展CTP,因为我通常右键单击并“添加服务引用”而不是ASMX“添加web引用“ - 如果是这样,VS2005的这个扩展确实需要安装.NET 3.0。但是通过简单的“添加网络参考”你仍然可以输入用户名/密码...我只是不知道这个vb / c#会是什么样的......