【发布时间】:2011-04-22 00:12:59
【问题描述】:
我编写了一些 WCF 应用程序 - (使用 IIS 7)。 连接到该服务的客户端是我在 silverlight 中开发的。
我希望能够仅让我编写的客户端访问该服务并使用它 => 如果其他客户端将尝试访问该服务(没有用户名 +密码)服务将忽略他。
我该怎么做?
感谢您的帮助。
【问题讨论】:
标签: silverlight wcf security authentication
我编写了一些 WCF 应用程序 - (使用 IIS 7)。 连接到该服务的客户端是我在 silverlight 中开发的。
我希望能够仅让我编写的客户端访问该服务并使用它 => 如果其他客户端将尝试访问该服务(没有用户名 +密码)服务将忽略他。
我该怎么做?
感谢您的帮助。
【问题讨论】:
标签: silverlight wcf security authentication
问题是 Silverlight 中当前的功能集是有限的,所以要走的路是 Windows 身份验证,这在 Internet 上不起作用:
<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>
或用户名令牌,可以通过自定义密码验证器或成员资格提供者进行验证。缺点是 Silverlight 仅通过 HTTPS 支持此功能:
<bindings>
<binding name="authenticatedBinding">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="None" />
<message clientCredentialType="UserName" />
</security>
</binding>
</bindings>
换句话说:如果您需要安全协议,那么 HTTPS 是唯一的选择。如果您只需要通过 HTTP 对客户端进行身份验证,并且将用户名和密码作为纯文本传递没有问题,则可以尝试使用自定义凭据存储进行基本身份验证。任何其他情况都需要您构建自己的自定义解决方案。
【讨论】: