Web 身份验证:使用指纹扫描仪
Web-Authentication: Use a fingerprint scanner
已经存在一个基于Raspberry Pi 的终端,它的工作是显示一个网站。这很好用。最终用户只有一个触摸屏可以做所有事情,屏幕上只有一个网页。
用户身份验证是通过用户名和密码完成的。两者都很短,因为终端使用触摸界面,安全性对于用例来说并不是特别重要。
因为输入 username/password 仍然是相对耗时的,所以我喜欢在终端上使用指纹扫描仪。用户身份验证仍应在服务器端完成。第一步,客户端和服务器之间的通信不是很重要(客户端和服务器总是在同一个本地网络中)。
我现在的想法是:
- 一个Futronic F88 is added to the terminal. (It works with the RaspberryPi)
- futronic API 用于编写一个小程序,它只读出扫描仪并将图像存储在本地某处。
- 终端显示的目标网站包含一个隐藏的Java小程序,该小程序已签名并具有所有本地权限。
- 如果用户连接到该网站,Applet 将启动并运行本地程序以读出指纹图像。然后将此图像发送到服务器,在那里它与一些本地存储的图像进行匹配。
- 服务器使用SourceAFIS之类的软件进行指纹匹配
- 当然,网站总是知道当前的应用程序状态并向用户提示要做什么(例如 "scan you finger now")。
这个有用吗?我觉得最难的一点就是做Applet的东西。是否有可能做到这一点?特别是没有任何警告。用户甚至不应该知道他正在使用网站而不是本地应用程序。
或者除了使用 Java Applet 访问本地 USB 连接的指纹扫描仪之外,还有其他 "cleaner" 想法吗?例如。自定义浏览器插件?
非常感谢
我质疑用户不知道他们正在使用独立 Java 应用程序的好处。 Java 小程序很痛苦。如果你只是使用一个独立的 Java 程序,你可以这样做:
- Java 程序等待指纹扫描。
- 扫描指纹,Java通过 https 将图像上传到服务器,取回一次性密钥(用于有效扫描)或指示扫描无效的消息。
- Java 要么告诉用户扫描无效并返回到第 1 步,要么为有效扫描继续执行第 4 步。
- Java 写入本地 html 页面,其中包含:
- 一次性令牌
- 提交一次性令牌的表单
- Java登录时提交表单的脚本。
- Java 打开浏览器到该临时页面。
- Java 浏览器关闭时删除页面。
Applet 不会永远得到支持,而且设置起来很麻烦。每次更新浏览器或 JRE 时,您将不得不重新允许允许您执行此操作的所有权限。小程序也更难测试。
我在上面概述的独立解决方案不需要 JRE 和浏览器进行协调,升级两者都不太可能破坏它。事实上,通过调用 OS 处理 .html 文件的首选程序而不是启动特定浏览器,它可以完全与浏览器无关。
已经存在一个基于Raspberry Pi 的终端,它的工作是显示一个网站。这很好用。最终用户只有一个触摸屏可以做所有事情,屏幕上只有一个网页。
用户身份验证是通过用户名和密码完成的。两者都很短,因为终端使用触摸界面,安全性对于用例来说并不是特别重要。
因为输入 username/password 仍然是相对耗时的,所以我喜欢在终端上使用指纹扫描仪。用户身份验证仍应在服务器端完成。第一步,客户端和服务器之间的通信不是很重要(客户端和服务器总是在同一个本地网络中)。
我现在的想法是:
- 一个Futronic F88 is added to the terminal. (It works with the RaspberryPi)
- futronic API 用于编写一个小程序,它只读出扫描仪并将图像存储在本地某处。
- 终端显示的目标网站包含一个隐藏的Java小程序,该小程序已签名并具有所有本地权限。
- 如果用户连接到该网站,Applet 将启动并运行本地程序以读出指纹图像。然后将此图像发送到服务器,在那里它与一些本地存储的图像进行匹配。
- 服务器使用SourceAFIS之类的软件进行指纹匹配
- 当然,网站总是知道当前的应用程序状态并向用户提示要做什么(例如 "scan you finger now")。
这个有用吗?我觉得最难的一点就是做Applet的东西。是否有可能做到这一点?特别是没有任何警告。用户甚至不应该知道他正在使用网站而不是本地应用程序。
或者除了使用 Java Applet 访问本地 USB 连接的指纹扫描仪之外,还有其他 "cleaner" 想法吗?例如。自定义浏览器插件?
非常感谢
我质疑用户不知道他们正在使用独立 Java 应用程序的好处。 Java 小程序很痛苦。如果你只是使用一个独立的 Java 程序,你可以这样做:
- Java 程序等待指纹扫描。
- 扫描指纹,Java通过 https 将图像上传到服务器,取回一次性密钥(用于有效扫描)或指示扫描无效的消息。
- Java 要么告诉用户扫描无效并返回到第 1 步,要么为有效扫描继续执行第 4 步。
- Java 写入本地 html 页面,其中包含:
- 一次性令牌
- 提交一次性令牌的表单
- Java登录时提交表单的脚本。
- Java 打开浏览器到该临时页面。
- Java 浏览器关闭时删除页面。
Applet 不会永远得到支持,而且设置起来很麻烦。每次更新浏览器或 JRE 时,您将不得不重新允许允许您执行此操作的所有权限。小程序也更难测试。
我在上面概述的独立解决方案不需要 JRE 和浏览器进行协调,升级两者都不太可能破坏它。事实上,通过调用 OS 处理 .html 文件的首选程序而不是启动特定浏览器,它可以完全与浏览器无关。