如何识别客户端的唯一性?

时间:2015-05-01 15:59:16

标签: api rest oauth-2.0 asp.net-web-api api-design

TL; DR; 有没有办法将(承载?)令牌绑定到唯一的客户端,并在HTTP REQ Headers中表示?

在用户拥有服务帐户的方案中。同一用户应该能够使用不同的客户端应用程序(不同的浏览器,本机移动APP)来使用服务。最好的方法是,对于每个不同的环境,应该遵循登录过程(OAuth2?),每个应用程序都获取一个令牌(承载令牌)。然后,每个客户端都可以使用这些服务,并通过使用令牌识别它们,服务提供商可以使用它们。

虽然服务提供商希望将每个令牌的使用隔离到特定客户端时会发生什么情况,但大多数时候都可以正常工作?

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

P.S。:我认为将这样的值作为身体有效负载内的属性传递是无效的。由于此类身份验证步骤应在服务器读取HTTP标头时发生。

1 个答案:

答案 0 :(得分:0)

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

如果您希望通过确保呈现令牌的客户端是发布令牌的实际客户端来提高安全性,那么OAuth 2.0的扩展中会解决该问题,请参阅:http://www.thread-safe.com/2014/04/oauth-proof-of-possession-drafts.html < / p>

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