我现在使用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需要以几何级数上升?
1.
apikey
/
apisecretkey
这种模式确实是做的
ACL
,访问权限控制用的。
2.这种模式一般是把所有的请求参数排序后和
apisecretkey
做
hash
生成一个签名
sign
参数,服务器后台只需要按照规则做一次签名计算,然后和请求的签名做比较,如果相等验证通过,不相等就不通过。
3.一般来说每一个
api
用户都需要分配一对
apikey
/
apisecretkey
的,比如你有几百万的用户,那么需要几百万个密钥对的,这个数据量不算大的,用一个
mysql
表存下
你看到的网站是OAuth用的, 用来授权给第三方用户来获取本站用户信息.