我写了一些WCF应用程序 - (使用IIS 7)。 连接到此服务的客户端是由我在silverlight中开发的。
我希望能够仅我编写了访问该服务的客户端并使用它=>如果某个其他客户端将尝试访问该服务(没有用户名+密码),该服务将忽略他。
我该怎么办?
感谢您的帮助。
答案 0 :(得分:2)
问题是Silverlight中的当前功能集是有限的,因此要采用的方式是Windows身份验证,它无法在互联网上运行:
<bindings>
<binding name="authenticatedBinding">
<security mode="TransportCredentialOnly"> <!-- or Transport in case of HTTPS -->
<transport clientCredentialType="Windows" />
</security>
</binding>
</bindings>
基本身份验证,在处理时将用户名和密码验证为Windows帐户(here is some article,强制基本身份验证对自定义凭据存储进行验证):
<bindings>
<binding name="authenticatedBinding">
<security mode="TransportCredentialOnly"> <!-- or Transport in case of HTTPS -->
<transport clientCredentialType="Basic" />
</security>
</binding>
</bindings>
或UserName令牌,可以通过自定义密码验证程序或成员资格提供程序进行验证。缺点是Silverlight仅通过HTTPS支持此功能:
<bindings>
<binding name="authenticatedBinding">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="None" />
<message clientCredentialType="UserName" />
</security>
</binding>
</bindings>
换句话说:如果您需要安全协议,则唯一的选择是HTTPS。如果您只需要通过HTTP验证客户端,并且您将用户名和密码作为纯文本传递没有问题,则可以尝试使用自定义凭据存储进行基本身份验证。任何其他情况都要求您构建自己的自定义解决方案。