作者:专业拍片 | 来源:互联网 | 2023-08-30 23:24
最近在开发一个系统,需要提供openAPI给外部系统使用,那么API肯定需要设计一些认证、鉴权的流程。根据以往使用的一些公有云API以及微信API等来看,大多数平台都会给使用者提
最近在开发一个系统,需要提供 openAPI 给外部系统使用,那么 API 肯定需要设计一些认证、鉴权的流程。根据以往使用的一些公有云 API 以及微信 API 等来看,大多数平台都会给使用者提供 ak 和 sk 来调用 API 。
这里的 ak/sk 可能有的也会设计为 appId/appSecret 之类的,像阿里云的是 accessKeyId 和 accessKeySecret 。
我目前的看到和理解的有这么几种:
不传输 secret,调用 API 时,只传递 ak 和必要的数据。像阿里云 API,sk 是用作对称加密并进行消息签名,但我比较好奇的是,都说非对称加密安全性要高一些,为啥阿里云却选择了对称加密?
传输 secret,像 OAuth2 授权,在去获取 code 时,ak 和 sk 都要传递过去,那传递过程中不怕被截获吗?
所以疑问是:sk 的作用到底是什么?是仅仅像帐号密码中的“密码”一样,在调用 API 时传递过去进行认证?还是用于对传输的数据进行消息签名,以便服务端判断是否有数据篡改?或者还有其他作用?
第 1 条附言 · 151 天前
额,OAuth2 部分我看错了,获得 code 时的确不需要传 sk,code 换 token 时才需要传 sk,而且是在服务端传
传输期间用 HTTPS 就不怕被截获了吧