从Web浏览器访问智能卡读卡器?

时间:2011-07-19 16:53:23

标签: javascript actionscript-3 browser smartcard smartcard-reader

是否可以从运行在同一台计算机上的Web浏览器访问连接到计算机的智能卡读卡器,即从ActionScript,JavaScript或其中运行的任何脚本?

例如,我在ActionScript中阅读了有关flash.external.ExternalInterface类的内容。它可以用于访问智能卡读卡器还是Sandbox难以穿透?

7 个答案:

答案 0 :(得分:9)

问:是否可以从同一台机器上运行的网络浏览器访问连接到计算机的智能卡读卡器?

答:是的,有可能。我能够通过使用签名的JAVA小程序来做到这一点。 java applet需要签名,因为它需要用户授予访问系统文件/硬件的权限(就像让applet为你编写/编辑/删除文本文件一样)。

为什么选择java?我使用的智能卡读卡器已经有一个JAVA API,它也有使用java访问它的例子。但这些例子是以摆动的方式编码的。 (就像一个独立的桌面应用程序)我所做的只是将java swing代码移植到浏览器上的applet。我成功地使用此applet进行登录并通过要求智能卡,用户名和密码登录网站/ webapp。我会说非常安全。

源代码?尽管我想分享它,但我必须遵守公司合同才能不共享代码。只需使用java查找示例智能卡访问,然后将其移植到applet(用于Web)

我希望这会有所帮助

答案 1 :(得分:5)

您还可以查看此测试版原生插件:

https://github.com/ubinity/webpcsc-firebreath

它是基于firebreath框架的跨浏览器/跨pltaform插件,展示了PCSC API的一个子集。

答案 2 :(得分:4)

当此提案“Smart cards in browsers”生效后,我们也可以使用JavaScript。

答案 3 :(得分:3)

我大约在2012年做了同样的工作,那时候,我在之前提供Java Applet的工作上工作过。

如今[2015年12月],由于“最近”的安全问题,以及在解除对Java Applet的支持后使用Java Applet更不合理,并且本机插件技术也将停止使用。

无论Java Applet当前有用,接受@Glen Allen的答案,我不受合同约束,这里是一个示例Applet的开源代码: https://github.com/ist-dsi/signature

它建立在论文工作的基础上,它以这种格式生成文档:http://www.w3.org/TR/xmldsig-core/有关为什么可以在MsC论文的摘要中找到的更多信息https://fenix.tecnico.ulisboa.pt/downloadFile/395139415358/resumo.pdf(作者是一位更好的工程师但是,与论文作者相比,如果你想知道事物的艺术状态,它可能是一个很好的开始,虽然很旧)

事后看来还有更多的要求,不知道在我给你的代码上做了一些奇怪的技术选择,只是忽略那部分:)

其中一个答案暗示了PKCS_11和开放标准。也许这个技巧存在于智能卡读卡器驱动程序中,该驱动程序在客户端自动设置证书基础设施,我记得要通过大量的箍来设置我的ID卡的智能卡与Mac OS X上的读卡器与Chrome [AFAIK使用Apple的密钥库设置智能卡读卡器并不容易,也许当时也不容易配置Chrome以便它使用客户端身份验证并请求访问Apple的密钥库]。

也许NFC +智能卡和移动应用程序将是您的最佳选择。

让整个国家拥有带智能卡的身份证,许多政府服务已经使用网络应用程序,以及没有简单的方法来连接两者,这是一种浪费。

干杯。

答案 4 :(得分:2)

您可以使用已签名的Java小程序来访问阅读器。允许签名的小程序访问硬件外围设备,可以通过Java Crypto API访问智能卡读卡器。

希望这有帮助。

答案 5 :(得分:0)

如果您可以访问文件系统上的智能卡,例如连接USB驱动器并显示为单独的磁盘,则只需使用flash.net.FileReference

答案 6 :(得分:0)

如果您要坚持使用浏览器,则无法使用ActionScript / Flash实现此目的。

Adob​​e AIR可以执行此操作,但之后您必须构建一个用户在使用之前必须安装的应用程序。

像这样(AIR): http://cookbooks.adobe.com/post_Mass_Storage_Device_Detection_AIR_2_0-16747.html