是否可以从运行在同一台计算机上的Web浏览器(例如ActionScript、JavaScript或其他脚本)中访问连接到计算机的智能卡读卡器?
例如,我读到了ActionScript中的flash.external.ExternalInterface
类的相关内容。它能用于访问智能卡读卡器吗,还是沙箱无法穿透?
是否可以从运行在同一台计算机上的Web浏览器(例如ActionScript、JavaScript或其他脚本)中访问连接到计算机的智能卡读卡器?
例如,我读到了ActionScript中的flash.external.ExternalInterface
类的相关内容。它能用于访问智能卡读卡器吗,还是沙箱无法穿透?
问:是否可以从运行在同一台计算机上的Web浏览器访问连接到计算机的智能卡读卡器?
答:是的,这是可能的。我使用签名的JAVA小程序做到了这一点。由于该Java小程序需要用户授权访问系统文件/硬件(就像允许小程序为您编写/编辑/删除文本文件一样),因此它必须被签名。
为什么要用Java?我使用的智能卡读卡器已经有了一个JAVA API,并且还有使用Java访问它的示例。但是,这些示例是使用swing编写的(类似于独立的桌面应用程序)。我所做的就是将Java swing代码简单地移植到浏览器上的小程序中。我成功地使用这个小程序通过要求智能卡、用户名和密码,在网站/ Web应用程序上进行登录和注销。相当安全,我想说。
源代码?虽然我很想分享它,但我受到公司合同的约束不能分享代码。只需找到使用Java的智能卡访问示例,并将其移植到小程序中(用于Web)
希望对您有所帮助
我曾在2012年做过同样的事情,当时我是在一个提供Java Applet的旧工作基础上工作的。
现在[2015年12月],由于“最近”的安全问题以及对Java Applets的支持被取消,本地插件技术也正在停止使用,因此使用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和开放标准。也许诀窍在于一个智能卡读卡器驱动程序,它可以自动在客户端设置证书基础设施,我记得我不得不通过许多困难来设置我的身份证的智能卡,在Mac OS X上使用Chrome [据我所知,使用Apple的密钥库设置智能卡读卡器并不容易,而且也许在那个时候也不容易配置Chrome,使其使用客户端身份验证并请求访问Apple的密钥库]。
或者也许NFC + SmartCard和一个移动应用程序将是未来的发展方向。
这样做真的太浪费了,整个国家都有带有SmartCards的ID,许多政府服务已经有了WebApps,但两者之间没有简单的连接方式。
干杯。
如果您可以在文件系统上访问智能卡,就像连接 USB 驱动器并出现为单独的磁盘一样,那么您可以简单地使用 flash.net.FileReference
。
如果你必须坚持使用浏览器,那么就无法使用ActionScript/Flash实现这一点。
Adobe AIR可以做到这一点,但是您需要构建一个应用程序,用户在使用之前必须先安装它。
类似这样的东西(AIR): http://cookbooks.adobe.com/post_Mass_Storage_Device_Detection_AIR_2_0-16747.html