是否可以从运行在同一台机器上的网络浏览器访问连接到计算机的智能卡读卡器,即从其中运行的 ActionScript、JavaScript 或任何脚本?
例如,我阅读了一些关于flash.external.ExternalInterface
ActionScript 中的类的内容。它可以用于访问智能卡读卡器还是沙盒不可穿透?
是否可以从运行在同一台机器上的网络浏览器访问连接到计算机的智能卡读卡器,即从其中运行的 ActionScript、JavaScript 或任何脚本?
例如,我阅读了一些关于flash.external.ExternalInterface
ActionScript 中的类的内容。它可以用于访问智能卡读卡器还是沙盒不可穿透?
问:是否可以从运行在同一台机器上的网络浏览器访问连接到计算机的智能卡读卡器?
答:是的,这是可能的。我可以通过使用签名的 JAVA 小程序来做到这一点。Java 小程序需要签名,因为它需要用户授予访问系统文件/硬件的权限(与让小程序为您写入/编辑/删除文本文件相同)。
为什么是java?我使用的智能卡读卡器已经有一个 JAVA API,它也有使用 java 访问它的示例。但是这些示例是在摇摆中编码的。(就像一个独立的桌面应用程序)我所做的只是将 java swing 代码移植到浏览器上的小程序。通过要求智能卡、用户名和密码,我成功地使用这个小程序在网站/webapp 上进行了登录和注销。我会说非常安全。
源代码?尽管我很想分享它,但我受公司合同的约束,不能分享代码。只需找到使用 java 的示例智能卡访问并将其移植到小程序(用于 Web)
我希望这有帮助
你也可以看看这个 beta 原生插件:
https://github.com/ubinity/webpcsc-firebreath
它是基于 firebreath 框架的跨浏览器/跨 pltaform 插件,暴露了 PCSC API 的一个子集。
当这个提议“浏览器中的智能卡”得到实施时,我们也将能够为此使用 JavaScript。
我在 2012 年左右从事同样的工作,那时,我在之前提供 Java Applet 的工作之上工作。
如今 [2015 年 12 月],由于“最近”的安全问题,使用 Java Applet 变得更没有意义了,并且在解除对 Java Applet 的支持之后,原生插件技术也被停止使用。
不管 Java Applet 目前的用途如何,接受@Glen Allen 的回答,我不受合同约束,这里是一个示例 Applet 的开源代码: https ://github.com/ist-dsi/签名
它建立在论文工作的基础上,并以这种格式生成文档:http ://www.w3.org/TR/xmldsig-core/有关原因的更多信息可以在该 MSC 论文的摘要中找到https:// fenix.tecnico.ulisboa.pt/downloadFile/395139415358/resumo.pdf(虽然作者是比论文作者更好的工程师,但如果您想了解事物的最新状态,这可能是一个很好的起点,虽然很旧)
事后看来,还有更多的要求在我在这里给你的代码上做出了一些奇怪的技术选择,只是忽略了那部分:)
这里的答案之一暗示了 PKCS_11 和开放标准。也许诀窍在于智能卡读卡器驱动程序,该驱动程序自动在客户端设置证书基础设施,我记得必须经历很多麻烦,尽管在 Mac OS X 和 Chrome [AFAIK] 上使用读卡器设置我的身份证的智能卡使用 Apple 的 keystore 设置智能卡读卡器并不容易,而且在当时配置 Chrome 以使用客户端身份验证并请求访问 Apple 的 keystore 可能也不是那么容易]。
或者也许 NFC + SmartCard 和移动应用程序将是可行的方法。
让整个国家都拥有智能卡的身份证,许多政府服务已经使用网络应用程序,而且没有简单的方法将两者联系起来,这真是太浪费了。
干杯。
您可以使用签名的 Java 小程序来访问阅读器。已签名的小程序可以访问硬件外围设备,智能卡读卡器可以通过 Java Crypto API 访问。
希望这可以帮助。
如果您可以访问文件系统上的智能卡,例如连接 USB 驱动器并显示为单独的磁盘,那么您可以简单地使用flash.net.FileReference
.
如果您必须坚持使用浏览器,则无法使用 ActionScript/Flash 实现此目的。
Adobe AIR 可以做到这一点,但是您必须构建一个用户必须在使用之前安装的应用程序。
像这样的东西(AIR): http ://cookbooks.adobe.com/post_Mass_Storage_Device_Detection_AIR_2_0-16747.html