这是我们的设置 - 我们的客户将拥有一个数据库服务器,我们的数据库和多个客户端运行我们的前端。我们有一些WCF服务允许客户端从数据库请求信息,并且每个WCF会话都使用在数据库中存储(加密)的用户名/密码进行身份验证。这一切都很好,已经使用了几年。
我们现在正在添加使用连接到客户端PC的USB指纹识别器登录的功能。为此,我们将每个用户的指纹模板存储在数据库中,然后将它们全部上传到设备。然后,设备可以告诉我们哪个用户已经出示了他们的手指。
安全地允许我们的指纹客户端在不使用用户密码的情况下通过WCF服务进行身份验证并且不打开系统来攻击未经授权的用户的最佳方法是什么?
我的第一个想法是定义客户端和服务器都知道的密钥,在客户端上使用时间戳和登录的用户ID对其进行加密,然后将其发送到服务器,然后服务器可以确认请求来自我们的客户端
这是个好主意吗?攻击者是否可以转发相同的消息以启动未经授权的会话?
我不是安全专家,所以我更倾向于使用现有的解决方案而不是推销自己的解决方案。
我们正在使用C#并且只针对Windows。
答案 0 :(得分:1)
您可以使用存储在客户端上的x509证书来提供WCF服务所需的客户端凭据。这与通过SSL证书提供服务器安全性的方式相同。
使用证书的一些信息:
需要注意的是,您显然必须管理证书的分发和有效性。
如果客户端计算机位于同一个域中,则另一种方法是使用客户端Windows帐户进行身份验证:
使用Windows帐户的一些信息: