2015-05-01 64 views
1

TL; DR;是否有任何方法将(承载?)令牌绑定到唯一的客户端,并在HTTP REQ头中表示该令牌?如何识别客户唯一性?

在用户拥有服务帐户的情况下。同一用户应该能够使用不同的客户端应用程序(不同的浏览器,原生移动应用程序)来使用服务。对于每个不同的环境,最好的方法是应该遵循一个登录过程(OAuth2?),每个应用程序获取一个令牌(不记名令牌)。然后,每个客户端都能够使用这些服务,并且通过使用该令牌识别他们自己,服务提供商可以对其使用范围进行限定。

虽然服务提供商想要将每个令牌的使用隔离到特定客户端时会发生什么情况,但这在大多数情况下都能正常工作?

当然,在安全事件中,提供者可以放弃持有令牌的集合/表,但不会更好地让客户传递其唯一标识符(可能是md5(concat(app.version, environment.name, username)))的MD5及其身份验证令牌?

P.S .:我认为传递这样的值作为一个属性在身体的有效载荷是无效的。由于这种认证步骤应该在服务器读取HTTP头时进行。

回答

0

客户端由客户端标识符(client_id)唯一标识。 client_id可能会返回承载令牌访问验证的结果,并且资源服务器可能会保留一个黑名单,尽管授权服务器更有可能将其列入黑名单。

如果你正在寻找通过确保客户提出的令牌是实际的客户端令牌颁发给,那是OAuth 2.0用户的扩展得到解决,以提高安全性,请参阅:http://www.thread-safe.com/2014/04/oauth-proof-of-possession-drafts.html

所以WRT 。以客户唯一性:通过client_id确保。 WRT。安全性:任何不包含将令牌绑定到客户端的秘密都不会提高安全性。

+0

我明白你的观点,毫无疑问'client_id'是过程的一部分。是客户唯一性可能被欺骗。我猜我可以通过执行'md5(concat(app.version,env.name,username,verifier(salt,username,secret)))'''''''''''''''''感谢您的参考! –