SK: Secret Access Key
,是⽤户⽤于加密认证字符串和⽤来验证认证字符串的密钥,其中SK
必须保密。
通过使⽤Access Key Id / Secret Access Key
加密的⽅法来验证某个请求的发送者⾝份。
客户端在调用服务端接口的时候,会带上ak
以及signature
(使用sk对内容进行加密后得出的签名)进行请求,在服务端接收到这个请求的时候,首先会根据ak
去数据库里面去找到对应的sk
,然后使用sk
对请求内容进行加密得到一个签名,然后对比客户端传过来的签名和服务端计算的出来的签名是否一致,如果一致则代表身份认证通过,反之则不通过。
二、AK/SK使⽤机制
云主机接收到⽤户的请求后,系统将使⽤AK
对应的相同的SK
和同样的认证机制⽣成认证字符串,并与⽤户请求中包含的认证字符串进⾏⽐对。如果认证字符串相同,系统认为⽤户拥有指定的操作权限,并执⾏相关操作;如果认证字符串不同,系统将忽略该操作并返回错误码。
三、流程
- 判断⽤户请求中是否包含
Authorization
认证字符串。如果包含认证字符串,则执⾏下⼀步操作。 - 基于
HTTP
请求信息,使⽤相同的算法,⽣成Signature
字符串。 - 使⽤服务器⽣成的
Signature
字符串与⽤户提供的字符串进⾏⽐对,如果内容不⼀致,则认为认证失败,拒绝该请求;如果内容⼀致,则表⽰认证成功,系统将按照⽤户的请求内容进⾏操作。
客户端:
1. 构建http请求(包含 access key);
2. 使⽤请求内容和使⽤secret access key计算的签名(signature);
3. 发送请求到服务端。
服务端:
1. 根据发送的access key 查找数据库得到对应的secret-key;
2. 使⽤同样的算法将请求内容和 secret-key ⼀起计算签名(signature),与客户端步骤2相同;
3. 对⽐⽤户发送的签名和服务端计算的签名,两者相同则认证通过,否则失败。
四、应用示例
设计ak/sk
的请求参数
platform_type
:标明请求方是谁,即该例子中的ak
。time
:请求时间,时间戳,将会被对应的sk
配合加密算法进行加密,得到一个signature
签名。sign
:签名,使用sk配合对应的加密算法后进行加密得到的签名。
当发送请求时,请求端会带上这几个参数去请求接口,如请求
https:///xxx.com/students?platform\_type=school&time=1640494526&sign=54acba6857b284a8a481ed5913edd34d994721cc584305ff02c81bb3ced17212
**web浏览器中的javascript**
* 客户端javascript
* 在html里嵌入javascript
* javascript程序的执行
* 兼容性和互用性
* 可访问性
* 安全性
* 客户端框架
* **[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/topics/618166371)**
![](https://img-blog.csdnimg.cn/img_convert/ed2c4f9602fb053965a21c047d1291e6.png)
**window对象**
* 计时器
* 浏览器定位和导航
* 浏览历史
* 浏览器和屏幕信息
* 对话框
* 错误处理
* 作为window对象属性的文档元素
![](https://img-blog.csdnimg.cn/img_convert/81adbbfdefca6b401d7dc4e6acd9207d.png)