APIKey + APISecret的访问实现?

我现在使用Python设计一个设备接入服务器,其对外提供API进行存取访问。我看了看许多类似的网站,是通过API Key+API Secret进行访问控制的。

我粗略地了解过Web的RBAC。但是基于API Key + API Secret的访问控制实现好像不是RBAC,而是ACL。即:

Resource + API Key + API Secret 匹配正确后,才可以访问Resource。这是否意味着需要一张表格存储所有的排列组合?

id, device, snr, privilidge, api_key, api_secret, limitation, tags...

如果一个设备可以提供给多个API使用者使用,比如一台设备可以被制造商,分销商,维修商,最终用户,租户使用。那么岂非一台设备的api_key需要以几何级数上升?

阅读 10.7k
2 个回答

1.apikey/apisecretkey这种模式确实是做的ACL,访问权限控制用的。
2.这种模式一般是把所有的请求参数排序后和apisecretkeyhash生成一个签名sign参数,服务器后台只需要按照规则做一次签名计算,然后和请求的签名做比较,如果相等验证通过,不相等就不通过。
3.一般来说每一个api用户都需要分配一对apikey/apisecretkey的,比如你有几百万的用户,那么需要几百万个密钥对的,这个数据量不算大的,用一个mysql表存下

你看到的网站是OAuth用的, 用来授权给第三方用户来获取本站用户信息.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进