如何从智能卡读取数据以验证用户身份?

时间:2014-11-10 14:30:58

标签: java digital-signature smartcard

我要求用户使用连接到PC的智能卡(令牌)。当他访问网站时,我需要通过从智能卡读取证书信息来验证用户,然后使用DB验证这些数据。如果信息正确登录用户;否则显示错误消息或证书。

我们使用由与智能卡使用的CA不同的CA进行身份验证的SSL(HTTPS)连接。

我怎么能用Java做到这一点?

2 个答案:

答案 0 :(得分:1)

您对预期身份验证过程的描述显示了一个不寻常的弱点。证书保存公钥以及一些其他数据,如用户名等,i。即完全由公共数据组成。通常情况下,用户使用她的私钥来生成签名,并使用证书中的公钥验证签名,这有利于通过生成签名,间接证明卡,用户知道私人所需的PIN。密钥并且还可以防止重放攻击。此外,还不需要证书的数据库条目,因为您可以使用证书中的卡号等内容。 (但是,您可能需要其他信息的记录,例如相关的用户角色)。

答案 1 :(得分:0)

用户需要在门户网站上预先注册他的公钥(或者说包含公钥的证书)。然后在登录/身份验证时,用户使用智能卡中的私钥或浏览器端的 USB 令牌对身份验证令牌(例如“用户 ID|密码”)进行签名,并将带有身份验证令牌和签名令牌的请求发送到服务器。在服务器端,使用用户注册的公钥来验证签名的token,如果签名验证成功,用户就可以访问portal了。

在浏览器端,您可以使用来自 Digital Signing Browser Extension

的签名 Javascript API