从Web浏览器访问智能卡读卡器?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Web浏览器访问智能卡读卡器?相关的知识,希望对你有一定的参考价值。
是否可以从运行在同一台机器上的Web浏览器访问连接到计算机的智能卡读卡器,即从ActionScript,javascript或其中运行的任何脚本?
例如,我在ActionScript中阅读了有关flash.external.ExternalInterface
类的内容。它可以用于访问智能卡读卡器还是Sandbox难以穿透?
问:是否可以从运行在同一台计算机上的Web浏览器访问连接到计算机的智能卡读卡器?
答:是的,这是可能的。我能够通过使用签名的JAVA小程序来做到这一点。 java applet需要签名,因为它需要用户授予访问系统文件/硬件的权限(就像让applet为你编写/编辑/删除文本文件一样)。
为何选择java?我使用的智能卡读卡器已经有一个JAVA API,它也有使用java访问它的例子。但这些例子是以摆动的方式编码的。 (就像一个独立的桌面应用程序)我所做的只是将java swing代码移植到浏览器上的applet。我成功地使用此applet进行登录并通过要求智能卡,用户名和密码登录网站/ webapp。我会说非常安全。
源代码?尽管我想分享它,但我必须遵守公司合同才能不共享代码。只需使用java查找示例智能卡访问,然后将其移植到applet(用于Web)
我希望这有帮助
您还可以查看此测试版原生插件:
https://github.com/ubinity/webpcsc-firebreath
它是基于火呼吸框架的跨浏览器/跨平台插件,暴露了PCSC API的子集。
当这个提议“Smart cards in browsers”实现时,我们也可以使用JavaScript。
我在大约2012年做了同样的工作,那时候,我曾在之前提供Java Applet的工作上工作过。
如今[2015年12月],由于“最近”的安全问题而使用Java Applet,以及在解除对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 +智能卡和移动应用程序可能会成为现实。
让整个国家拥有带智能卡的ID,许多政府服务已经使用webapps,并且没有简单的方法来连接这两者,这是一种浪费。
干杯。
您可以使用签名的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
以上是关于从Web浏览器访问智能卡读卡器?的主要内容,如果未能解决你的问题,请参考以下文章
从通用浏览器访问智能卡的架构?或者:如何弥合从浏览器到PC / SC堆栈的差距?
如何通过 Web 使用智能卡和智能卡读卡器实现双因素身份验证