我正在努力思考如何创建一个auth系统,该系统允许共享相同源代码但具有基于uuid的随机标识符的任意客户端进行身份验证。这样做的必要条件是,客户端不必需要人工干预即可登录该服务器,将其视为需要登录到中央服务器但不能接收用户输入的自动物联网设备。
对于我的用例,我并不需要它成为一个非常安全的系统。但是至少对攻击者有某种阻碍是很好的。
我的第一种方法是使用标识符uuid作为用户名,以及使用该标识符将标识符与其他动态值以及秘密一起哈希的函数,但是在我看来,这有点hacky ...对于每个设备,生成的哈希值必须恒定。
客户端不能使用非简单的哈希/加密方法。这是他们可以计算的内容的列表:MD5哈希,SHA1哈希,两个base64字符串之间的XOR,SHA256哈希和ARCFOUR。
但是,服务器可以计算任何加密/哈希算法,并且设备的标识符是公共的,任何人都可以访问。但是,源代码是私有的,通信是通过https进行的。
关于如何使用更好的auth方法实现此目标的任何想法? (考虑到这些限制)
您说IoT设备无法接收用户输入。它可以向用户显示或传达任何信息吗?如果是这样,您可以考虑使用OAuth2 device flow。
您的IoT设备将轮询授权服务器。您可以使用手机或计算机上的浏览器来授权IoT设备。