防止令牌共享的最佳方法是什么?

What is the best way to prevent token Sharing?

我正在寻找防止客户共享 oauth 令牌的想法,即创建令牌的客户应该只是使用它的人。在服务器端可以做些什么来防止该客户与其他人共享令牌?

在我看来,防止令牌共享的最佳方法是获取 pc 的机器 ID、硬件序列号等,然后将其作为令牌。在此之前将收集机器 ID 注册到您的数据库。除了注册机,没有人可以访问您的网络服务。

否则人id,可用于搜索数据库中是否存在,我的意思是先注册人id,然后先验证他们是否已注册,但如果此人将人id提供给其他人,这可能是问题。

希望对您有所帮助

有几个 IETF RFCs/drafts 试图提供一种方法来验证客户端是令牌的“所有者”。 这些规范与 OAuth2 框架协议相关,但它们可以在任何其他令牌交换上下文中实施。

他们是:

另一个有趣的协议 Hawk 令牌:请参阅 https://github.com/hueniverse/hawk(Eran Hammer 是 OAuth2 贡献者)

如您所见,所有这些规范都依赖于客户签署的请求。这似乎是验证允许客户端使用令牌的最佳方式。 IP 地址、用户代理、设备 ID 等任何其他验证都不可靠,因为它们可能被欺骗。