需要为silverlight客户端使用安全协议

时间:2011-04-22 00:12:59

标签: silverlight wcf security authentication

我写了一些WCF应用程序 - (使用IIS 7)。 连接到此服务的客户端是由我在silverlight中开发的。

我希望能够我编写了访问该服务的客户端并使用它=>如果某个其他客户端将尝试访问该服务(没有用户名+密码),该服务将忽略他。

我该怎么办?

感谢您的帮助。

1 个答案:

答案 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验证客户端,并且您将用户名和密码作为纯文本传递没有问题,则可以尝试使用自定义凭据存储进行基本身份验证。任何其他情况都要求您构建自己的自定义解决方案。