使用 Web 应用程序连接到 RFID reader

Connecting to RFID reader using web application

我们最近购买了 RFID reader 用于文件跟踪。它附带一个用 C# 编写的演示软件。

是否可以使用 Web 应用程序访问和控制 RFID reader?

Is it possible to access and control RFID readers using web applications?

不直接,因为那会大规模破坏网络安全。 Web 浏览器竭尽全力将网站与彼此和系统隔离(严重可疑的事情,如 WebUSB 不支持)。

通常的方法是让小型网络服务器与 RFID reader 通信并提供基于 HTTP 的 API。当然这样做需要 Cross Origin Resource Sharing.

您可能犯的最大错误是创建一个像 local-rfid.yourorg.example.com 这样的 DNS 条目并将其映射到 127.x.x.x and/or ::1 以获得可签名的 TLS 证书那个域。问题是,您必须将私钥与您的 RFID 接口程序一起发送,并且该密钥可能会被泄露,这将使使用该密钥的任意软件能够使用您的 DNS 条目来破坏 HTTPS sessions。 所以不要那样做!

执行此操作的正确方法是在 localhost 域下访问您的 RFID reader(无需为 CORS 使用 TLS),并且对于您希望能够的 Web 应用程序使用 HTTP header 访问特定的本地服务,像这样指定服务

Access-Control-Allow-Origin: http://localhost:3000

同样重要使用一些网络身份验证方案,如 OAuth2 等,以根据 RFID 对基于浏览器的应用程序进行身份验证 reader 服务,即当对 RFID reader 服务发出请求时,将 session 令牌传递给它(通过 cookie,或请求 header),然后让 RFID reader 服务检查您的应用程序服务器,如果该令牌有效。

如果 RFID 指的是 NFC,您可能会发现此 API 有帮助:https://w3c.github.io/web-nfc/ .

在我看来,在它成为标准之前,这是一项正在进行的工作。