如何在WCF客户端应用程序中保护敏感数据?

时间:2011-02-07 17:45:35

标签: .net wcf security

我有调用此服务的WCF Web服务和客户端,此客户端将部署在许多位置。我必须唯一地验证和授权每个客户端。因此每个位置都有其唯一的用户名和密码。

现在我的问题是

  1. 如何唯一地识别每个客户?
  2. 如何在客户端存储一些敏感数据?
  3. 我想了几个方法,

    1. 使用证书来识别客户端。我必须生成并部署证书。
    2. 在服务器端拥有一个活动目录,并让每个客户端使用一个Windows用户帐户。
    3. 加密用户名和密码并将其存储在配置文件中。我相信使用aspnet_regiis加密配置文件不会帮助我,因为任何人都可以解密它,如果他们获得对机器的访问权限。

2 个答案:

答案 0 :(得分:1)

您的问题可以分为三个部分。其中两个与WCF中的安全性直接相关,另一个超出了范围。

身份验证和授权 - 是的,这是可能的。 WCF提供了几种设置,允许对客户端进行身份验证并提供其角色。你也可以建立自己的。验证不在AD域中的客户端的最常见方案是使用用户名和密码凭据以及服务或使用客户端证书进行自定义验证。

自信和诚信 - 由于您对安全性的关注,您还应该涉及凭据(和邮件数据)的安全传输。如果您不提供安全传输,网络上的任何人都将能够嗅探通信并窃取凭据(或数据)。攻击者还可以拦截通信并修改传输的数据。为了保护通信,您需要在证书提供的Internet方案中使用传输安全性(TLS,SSL / HTTPS)或邮件安全性。

保护客户端上的凭据 - 这主要是您无法控制的。将凭据凭据部署到不受您控制的客户端计算机的客户端应用程序后,您永远不能强制提供所提供凭据的安全性。这取决于您的用户/客户。如果您以某种方式在应用程序中包含凭据,熟练的最终用户/攻击者可能始终能够获得它们。但这是每个安全解决方案的问题 - 有人必须能够访问凭证。

答案 1 :(得分:0)

我倾向于赞成证书。他们比u / p更难妥协。

如果您的客户端数据相当轻量级,只需在客户端应用中使用对称加密encipher an XML file

如果您担心客户端应用程序遭到入侵,您可以使用服务器的公钥非对称地加密数据。然后,当您需要它时,您将轻量级加密数据发送到服务器并在WCF响应中将其解密。如果只在会话启动时发生这种情况,那么这可能是可行的(否则会产生很多流量)。