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需要以几何级数上升?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
1.
apikey
/apisecretkey
这种模式确实是做的ACL
,访问权限控制用的。2.这种模式一般是把所有的请求参数排序后和
apisecretkey
做hash
生成一个签名sign
参数,服务器后台只需要按照规则做一次签名计算,然后和请求的签名做比较,如果相等验证通过,不相等就不通过。3.一般来说每一个
api
用户都需要分配一对apikey
/apisecretkey
的,比如你有几百万的用户,那么需要几百万个密钥对的,这个数据量不算大的,用一个mysql
表存下你看到的网站是OAuth用的, 用来授权给第三方用户来获取本站用户信息.