AWS或阿里云为何使用密钥对而不是单一字符串作为 Token
谢邀。因为我没有详细去了解过,所以答案可能不够完整和严谨,仅供参考。如你所说,Access-Key 是用来标识用户身份的,而用户没有把握保证不泄露它(比如邮箱被盗了)。所以服务提供商不能只看 Access-Key,还需要确认 Access-Secret-Key。同样,用户也无法保证 Access-Secret-Key 不泄露,所以服务提供商需要将这个值设计成不出现在 HTTP/HTTPS 请求里(即只用于签名);而在泄露之后,还需要提供重置功能,避免损失的扩大。如果是 AWS 这类私有使用(即每个用户自己去调用 API),上述的安全机制也够用了,毕竟泄露也就影响一个用户;而如果是微博客户端这类公开使用(即大部分用户使用同一个客户端),对请求签名也就意味着密钥会存在于客户端中,就肯定能反编译找到,而且如果重置的话,这些用户都会受影响。所以 OAuth 2.0 为了顺应移动互联网时代,相对于 OAuth 1.0/1.0a 做出了不再要求客户端签名,但强制要求使用 HTTPS 的改进。但是仅靠 HTTPS 是不够支撑 OAuth 2.0 的安全性的,历史上它出现过很多次问题,大部分都是因为实现者没有按照规范去处理,忽略或省略了其中的几步。
■网友
原来做过一些OAuth的client,但是好几年没接触了,随便答下,请折叠。如果是从第三方客户端直接到AWS的话,用Key和Secret跟只用Key,安全性是几乎一样的,因为这个Secret也一定保存在客户端本地了。所以正常应该是第三方客户端把请求参数发给第三方自己的服务端,由服务端验证过用户身份后再用服务端持有的secret计算最终的签名,至于最终的请求是服务端发起还是客户端发起,由产品特性、用户数量情况决定。
推荐阅读
- #补贴#江阴为何迟迟没执行?|解忧帮 无锡:机动车报废有补贴
- OC为何跌出语言榜前十
- 何能|布局素质教育 教育巨头为何能迅速推进?
- 汽车|把车越卖越贵,全新领克01为何可以这样?
- 阿里程序员网上招人的情况为何如此多见
- 心流西春|为何你的后半箱油总是不耐用?油是正经油,问题可能出在这里
- 一粒尘埃的尘|为何很多新车不再设计“雾灯”,雾灯不重要吗?
- 环球车讯网|宝马MINI 为何在“迷你”的路上越跑越远?
- 汽车一起看|为何说国产高端SUV三强之首是名爵HS,领克和WEY竟无法反驳?
- 汽车知识|沃尔沃XC60为何能直击年轻人的心?看完便知