在这里作为移动应用程序的相对n00b询问,因为我主要是后端开发人员。
我们正在构建一个移动应用程序,并且有一个业务要求,即用户的设备被唯一标识并在后端注册(即用户可以安装应用程序,但要访问服务,他们需要将该设备注册到我们的后端服务,并且有X个设备可以同时注册的限制)。
前端团队目前创建了一个从移动设备中提取唯一设备 ID 的功能,但安全团队还告诉我们,设备 ID 被视为敏感信息,我们不应该通过网络传输此信息。
撇开加密可以应用于设备 ID 不谈,我正在考虑完全替代设备 ID。我们使用 OAuth 进行身份验证,在有效注册结束时,将生成 OAuth 访问和刷新令牌。由于刷新令牌应该是长期存在的,并且安全地(假定)存储在客户端,因此刷新令牌是否可以用作设备 ID 的替代品?这个策略中是否有任何已知的漏洞?根据文档,刷新令牌应该是"长期的",但确切的生存期是多少?
您可以配置 Oauth2令牌的生命周期,但这会破坏 Oauth2 的目的。如果设备遭到入侵,您将如何处理。您必须使令牌失效。
使用设备 ID 是要走的路,如果它是普遍唯一的,或者您确定不会有冲突。
我建议您使用设备 ID 并保留 Oauth2 默认行为。
您应该使用 SHA256 对设备 ID 进行哈希处理。 OAuth 令牌是易失性的,甚至在某些时候刷新令牌。