如何处理SilverLight 4和WPF应用程序的WCF身份验证

时间:2011-02-04 15:51:45

标签: c# wpf silverlight wcf

我正在寻找建议,以便针对同时针对SilverLight和WPF客户端界面的应用程序处理WCF身份验证。

编辑:实际上,我需要的身份验证模式是用户名/密码组合。

此外,将来应用程序应该能够以完全独立模式(同一应用程序内的同一台计算机上的客户端(WPF)和服务器)工作。那么在这种情况下我不应该使用WCF吗?

编辑:另外一个补充,将来应用程序应该能够在本地网络客户端 - 服务器模式(但没有IIS)中工作,就像游戏一样。那么在这种情况下我不应该使用WCF吗?还是其他任何选择?

5 个答案:

答案 0 :(得分:1)

您可以通过继承UserNamePasswordValidator并在行为配置中设置customUserNamePasswordValidatorType来实现自己的验证器,如下所示:

<behaviors>
            <serviceBehaviors>
                <behavior name="">
                    <serviceMetadata httpGetEnabled="true" />
                    <serviceCredentials>
                        <userNameAuthentication userNamePasswordValidationMode="Custom"
                                                customUserNamePasswordValidatorType="MyNamespace.MyValidator, MyNamespace" />
                    </serviceCredentials>
                </behavior>
            </serviceBehaviors>
        </behaviors>

在客户端,您可以将用户名/密码组合设置为服务的ClientCredentials.UserName.UserName / Password属性。

答案 1 :(得分:0)

使用AuthenticationService查看此解决方案。我喜欢它并决定将它用于三平台应用程序(web / SL / WPF)

http://msdn.microsoft.com/en-us/library/system.web.applicationservices.authenticationservice.aspx

按照示例实施的链接进行操作。

通过这种方式,您可以依赖经典的自定义ASP .NET MembershipProvider实现(即使在独立客户端中)。

答案 2 :(得分:0)

IIS不是托管WCF服务的要求。请查看此link以了解各种托管选项。此外,WCF允许通过各种协议进行通信。请查看此link,了解基于操作平台和通信协议的托管选项摘要。

答案 3 :(得分:0)

可用于验证WCF服务的技术很少(X509证书,令牌,用户名/密码和Windows身份验证。Selecting正确的凭据类型很重要。

假设(因为您使用的是Silverlight和WPF)设置在Windows环境中,您可以使用Windows身份验证。 To启用Windows身份验证,按照突出显示的步骤操作,并在IIS上托管您的服务。

希望这有帮助并祝你好运!

答案 4 :(得分:0)

使用WCF的优点是,如果您想在网络中或外部公开服务,您只需更改/添加一些其他配置,而无需对代码进行任何更改。

因此,在您的情况下,在一台计算机上或在网络中同时拥有客户端和服务器是绝对正确的,并且简单的方法是暴露2个端点,以处理您对同一服务的要求。

您也可以使用一个端点,但使用具有不同绑定机制的不同端点可以减少身份验证期间的开销。例如:当你在同一台机器上时,你可以使用net:pipe或net:tcp绑定 当您在域内时,可以使用net:tcp或httpbinding。

使用不同的绑定时,性能会有所不同。