从web浏览器访问智能卡读卡器
Smartcard reader access from a web browser?
是否可以从同一台机器上运行的网页浏览器(即从ActionScript、JavaScript或其中运行的任何脚本)访问连接到计算机的智能卡读卡器?
例如,我读了一些关于flash.external.ExternalInterface
类在ActionScript。沙箱可用于存取智能卡读卡器吗?沙箱是否无法破解?
问:是否可以从同一台机器上运行的web浏览器访问连接到计算机的智能卡读卡器?
A:是的,这是可能的。我可以通过使用一个带签名的JAVA applet来做到这一点。java applet需要签名,因为它需要用户授予访问系统文件/硬件的权限(与让applet为您编写/编辑/删除文本文件相同)。java的原因吗?我使用的智能卡阅读器已经有一个JAVA API,它也有使用JAVA访问它的例子。但是示例是用swing编写的。(就像一个独立的桌面应用程序)我所做的只是将java swing代码移植到浏览器上的applet。我成功地使用这个applet通过智能卡,用户名和密码登录和注销了一个网站/web应用程序。我觉得很安全。
源代码?虽然我很想分享它,但我受公司合同的约束不能分享代码。只需找到一个使用java的智能卡访问示例,并将其移植到applet(用于web)
希望对大家有所帮助
你也可以看看这个测试版原生插件:
https://github.com/ubinity/webpcsc-firebreath它是基于firebreath框架的跨浏览器/跨平台插件,暴露了PCSC API的一个子集。
当这个提案"智能卡在浏览器"被实现时,我们也将能够使用JavaScript来实现它。
我在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/更多信息可以找到为什么的硕士论文的文摘https://fenix.tecnico.ulisboa.pt/downloadFile/395139415358/resumo.pdf(作者是工程师比论文作家,但它可能是一个很好的开始,如果你想知道的最先进的东西,虽然是旧的)
在我给你的代码上,有更多的需求是在事后和不知道的情况下做出了一些奇怪的技术选择,请忽略这部分:)
这里的一个答案暗示了PKCS_11和开放标准。也许诀窍驻留在一个智能读卡器驱动程序自动设置证书基础设施在客户端,我记得要经历很多篮球尽管设置我的身份证的智能卡阅读器在Mac OS X上Chrome (AFAIK不是容易设置智能读卡器与苹果的密钥存储库,或许也不是那么容易当时Chrome配置,这样它将使用客户机身份验证和请求访问苹果的keystore)。
或者NFC +智能卡和移动应用将是未来的发展方向。
整个国家的身份证都使用智能卡,许多政府服务已经使用网络应用程序,而且没有简单的方法将两者连接起来,这真是一种浪费。
欢呼。
您可以使用带签名的Java applet来访问阅读器。有签名的小程序可以访问硬件外设,智能卡读卡器可以通过Java加密API访问。
如果您可以访问文件系统上的智能卡,就像USB驱动器连接并显示为单独的磁盘一样,那么您可以简单地使用flash.net.FileReference
。
如果你必须坚持使用浏览器,你就不能使用ActionScript/Flash实现这一点。
Adobe AIR可以做到这一点,但是你必须建立一个用户在使用它之前必须安装的应用程序。
像这样(AIR):http://cookbooks.adobe.com/post_mass_storage_device_detection_air_2_0 - 16747. - html