2010-02-17 49 views
0

这是我们的设置 - 我们的客户将拥有一个运行我们前端的数据库和多个客户端的数据库服务器。我们有一些WCF服务允许客户端从数据库请求信息,每个WCF会话都使用数据库中存储(加密)的用户名/密码进行验证。这一切都很好,并已使用了几年。安全问题 - 允许没有密码的授权验证

我们现在增加了使用连接到客户端PC的USB指纹识别器进行登录的功能。为此,我们将每个用户的指纹模板存储在数据库中,然后将它们全部上传到设备。该设备然后可以告诉我们哪个用户已经展示了他们的手指。

什么是最好的方式安全地让我们的指纹客户端通过WCF服务进行身份验证,而无需使用用户的密码,也不需要打开系统来防止未经授权的用户进行攻击?

我的第一个想法是定义一个客户端和服务器都知道的密钥,在客户端用时间戳和登录的用户ID对其进行加密并将其发送给服务器,服务器可以确认该请求来自我们的客户。

这是个好主意吗?攻击者是否可以传递相同的消息来启动未经授权的会话?

我不是一位安全专家,所以我更倾向于现有的解决方案,因为显而易见的原因而滚动我自己的解决方案。

我们使用的是C#,只是针对Windows。

回答

1

您可以使用存储在客户端上的x509证书来提供WCF服务所需的客户端凭据。这将以与通过SSL证书提供服务器安全性相同的方式工作。

使用证书的一些信息:

一个忠告是,你显然需要管理证书的分发和有效性。

钍另一种方法是使用Windows帐户的用户进行身份验证,如果客户端机器是在同一个域:

与Windows帐户工作的一些信息: