我目前正在为我的网络服务REST API
工作。每个注册的用户都必须拥有API的单独访问令牌,但是如何生成一个,而不检查每个令牌是否与新令牌相同?
[不重要]
当我使用REST API以便我可以使用网络界面,桌面应用程序,Android应用程序......时,这是一个好主意还是坏主意?但它不会成为一个公共功能"!可能稍后。
答案 0 :(得分:0)
如果由我决定,我会将递增的号码作为用户ID发出。然后我会使用类似256位AES的东西来加密该用户ID。
然后我可能让用户包含一个JSON web token,其中包含用户ID和访问令牌 - 加密ID。
要验证其Web令牌,您需要加密其用户ID并检查它是否与访问令牌匹配(或者您解密访问令牌并检查它是否与用户ID匹配)。
只要您创建一个真正随机的加密密钥,并保密,您的安全性应仅依赖于底层加密算法的安全性。
这里的主要缺点是所涉及的值是固定的Web令牌,因此如果其他人“嗅探”用户的数据包,他们可以使用回放攻击 - 也就是说,他们可以使用相同的密钥验证他们的请求。真正的用户。有一些方法可以防止这种情况,但是(除非你使用大多数预先构建的“东西”来实现它),它们会变得更加复杂。
最简单的“增强”协议可能不仅使用用户ID,而且(例如)会话ID和数据包ID(两者都增加),将三者连接在一起并加密。然后每个数据包都有一个唯一的加密值来验证。