要求
我目前正在为机器销售商开发PHP门户网站。他的机器能够通过互联网与集成的SBC和LAN端口进行通信。购买机器的消费者在登录机器 - 卖家 - 门户后可以在线配置。
在线配置后,他们可以通过HMI(机器本身的触摸显示屏)将配置文件下载到机器上。配置文件包含有价值的私人信息。 HMI不是基于浏览器的。它是一个二进制应用程序,例如,一个按钮"加载配置"。其余的必须在背景中的bash / php-scripts中完成。
身份验证解决方案?
我处于一个非常早期的受孕状态,但我对某些过程感到疑惑。我从来没有一台机器需要访问我的服务,只有人类。实际上这样做的方法是什么?
我有三种方法:
1。使用" API-Key"
进行访问意思是:在SBC的操作系统中有一个包含8asd7d7d
之类的序列的文件。当我收到GET
- 请求portal.company.com/getConfig/8asd7d7d
时,我知道它来自哪台机器,并且允许它接收此配置。
缺点:买方可以访问SBC文件系统。他可能会意外地破坏文件。他可以找到生成方案并从其他买家下载配置文件。
2。生成一次性UUID-URL
意味着:消费者在线创建他的配置。之后,他会显示一个像portal.company.com/getConfig/d8ac2292ea1fec3fe5c65e6ef573
这样的一次性URL,他可以在HMI中输入并加载文件。
缺点:消费者必须在HMI的显示屏中键入一个长URL。
第3。模拟人工身份验证过程
表示:机器使用其所有者的登录数据向portal.company.com/login
发送有效的后请求。它获得了一个会话cookie(甚至可以在非浏览器环境中使用,如纯PHP脚本?!),门户逻辑知道哪些URL可访问,哪些不可访问(如人类访问者)。
任何其他/更好的想法?
我倾向于使用解决方案2,因为它相对容易实现并且希望是安全的(让我们假装sha512-string作为URL参数)。你有什么更好的建议吗?请注意,反过来不可能,门户网站无法主动将数据推送到机器(因为它没有固定的IP,没有网络服务器,......)
答案 0 :(得分:0)
如果设备支持加密功能,则可以使用PKI。使用设备公钥加密数据。只有知道私钥的设备才能解密配置文件。 PKI也支持身份验证。此处设备连接到请求客户端证书的登录门户,在客户端验证后,配置文件将发送到设备公钥加密的设备。
缺点:每个设备都需要客户端证书。