【问题标题】:Web-Authentication: Use a fingerprint scanner网络认证:使用指纹扫描仪
【发布时间】:2023-03-05 13:46:02
【问题描述】:

已经存在一个基于 Raspberry Pi 的终端,用于显示网站。这很好用。最终用户只有一个触摸屏来做所有事情,而且屏幕上只有一个网页。

用户身份验证通过用户名和密码完成。两者都很短,因为终端使用触摸界面,并且安全性对于用例来说并不是极其重要。

因为输入用户名/密码仍然比较耗时,所以我喜欢在终端上使用指纹扫描仪。用户身份验证仍应在服务器端完成。第一步,客户端和服务器之间的通信不是很重要(客户端和服务器总是在同一个本地网络中)。

我现在的想法是:

  1. Futronic F88 已添加到终端。 (It works with the RaspberryPi)
  2. futronic API 用于编写一个小程序,它只读取扫描仪并将图像存储在本地某处。
  3. 终端显示的目标网站包含一个隐藏的Java Applet,它已签名并具有所有本地权限。
  4. 如果用户连接到网站,Applet 将启动并运行本地程序以读取指纹图像。然后将该图像发送到服务器,在该服务器上与一些本地存储的图像进行匹配。
  5. 服务器使用SourceAFIS之类的软件来匹配指纹。
  6. 当然,网站始终知道当前的应用程序状态并提示用户该做什么(例如“现在扫描你的手指”)。

这行得通吗?我觉得最难的一点是做Applet的事情。是否有可能做到这一点?特别是没有任何警告。用户甚至不应该知道他使用的是网站而不是本地应用程序。

或者有没有比使用 Java Applet 访问本地 USB 连接的指纹扫描仪更“清洁”的想法?例如。自定义浏览器插件?

非常感谢

【问题讨论】:

    标签: web applet raspberry-pi fingerprint


    【解决方案1】:

    我质疑用户不知道他们正在使用独立的 Java 应用程序的好处。 Java 小程序很痛苦。如果您只是使用独立的 Java 程序,您可以这样做:

    1. Java 程序等待指纹扫描。
    2. 指纹被扫描,Java 通过 https 将图像上传到服务器,取回一次性密钥(用于有效扫描)或指示扫描无效的消息。
    3. Java 要么告诉用户扫描无效并返回第 1 步,要么有效扫描继续第 4 步。
    4. Java 编写一个本地 html 页面,其中包含:
      • 一次性令牌
      • 提交一次性令牌的表单
      • 在登录时提交表单的 JavaScript。
    5. Java 会打开浏览器访问该临时页面。
    6. 当浏览器关闭时,Java 会删除页面。

    小程序不会永远受到支持,而且设置起来很麻烦。每次更新浏览器或 JRE 时,您都必须重新允许所有允许您执行此操作的权限。小程序也更难测试。

    我上面概述的独立解决方案不需要 JRE 和浏览器进行协调,升级任何一个都不太可能破坏它。事实上,通过调用操作系统的首选程序来处理 .html 文件,而不是启动特定的浏览器,它可以完全与浏览器无关。

    【讨论】:

    • “Applet 不会永远受到支持..” 不支持的时间是现在绝大多数互联网用户。见Java Plugin support deprecatedMoving to a Plugin-Free Web
    • 您的建议听起来不错:) 我只有一个问题:如果用户不按任何按钮,几分钟后 Web 应用程序会自动注销。服务器如何与应该开始扫描的客户端 java 应用程序进行通信?还是客户应该进行轮询?
    • Java 应用程序可以在单独的线程中启动浏览器,然后返回轮询指纹。当下一次指纹扫描成功时,终止所有现有的浏览器会话。 OR 获取衍生线程的进程 ID,然后查询 netstat 以获取浏览器拥有的已打开 TCP 端口。这些超时最终也会超时,当它们超时时,您知道一段时间内没有任何活动,您可以关闭浏览器。 您可以让 Java 充当浏览器和服务器之间的代理。然后它可以直接看到流量不足。我确定还有更多,但空间不足。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多