一般有以下几种认证方式:
下面主要介绍AK/SK。
云主机需要通过使用 Access Key Id / Secret Access Key 加密的方法来验证某个请求的发送者身份。
其中SK必须保密。熟悉非对称加密的的话,举个例子:AK相当于非对称加密的公钥,而SK相当于非对称加密的私钥。 公钥加密信息,只能由对应的私钥才能解密,这是基知哗判本原理。 AK/SK也是如此。
云主机接收到用户的请求后,系统将使用相同的SK和同样的认证机制生成认证字符串,并与用户请求中包含的认证字符串进行比对。如果认证字符串相同,系统认为用户拥有指定的 *** 作权限,并执行相关 *** 作;如果认证芦伍字符串不同,系统将忽略该 *** 作并返回错误码。
判断用户请求中是否包含Authorization认证字符串。如果包含认证字符串,则执行下一步 *** 作。
基于HTTP请求信息,使用相同的算法,生成Signature字符串。
使用服务器生成的Signature字符串与用户提供的字符串进行比对,如果内容不一致,则认为认搭改证失败,拒绝该请求;如果内容一致,则表示认证成功,系统将按照用户的请求内容进行 *** 作。
原文: https://blog.csdn.net/makenothing/article/details/81158481
1. 客户端需要在认证服务器中预先申请 AK 和 SK
2. 在调用 API 的时候,除传递请求必要的参数之外,还需要传输一个通过 HMAC 算法生成的一个签名串【签名串的生成方法后面讲】
3. 服务器通过预先留存的 AK 和 SK 进行同样的摘要算法计算,得到衫埋的结果与客户端传输的额外的参数进行比对,如果一致,则认为该请求是有效的;否则将拒绝处理这次请求,并返回 HTTP 403
假设请求的 URL 格式为 https://baidu.com/gate/move/?c=2&b=1
目前的实现方式无法抵御重放攻击;因此我们需要在签名时放入一下干扰信息
在业界标准中解决这个问题有两种典型的做法
1)质疑/应答算法【OCRA: OATH Challenge-Response Algorithm】
质疑/应答算法需要预先客户端先请求一次服务器,获得 HTTP 状态码为 401 未认证的返回,并得到一个随机字符串(nonce)。将 nonce 附加到按照上面说到的方法袜卜进行 HMAC_SHA1 签名,服务器使用预先分配的 nonce 同样进行签名校验,这个 nonce 在服务器只会被使用一次【当然你可以给这个nonce设置一个有效期,只要在有效期之内均可以使用】,因此可以提供唯一的摘要
2)timestamp+nonce方案
nonce 指唯一的随机字符串,用来标识每个被签名的请求,通常为每个请求提供一个唯一的标识符,服务器能够防止请求被多次使用【记录所有用过的 nonce 以阻止它们被二次使用】;但是对于服务器永久存储所有接收到的 nonce 的代价非常大,因此可以通过 timestamp 配合 nonce 进行优化
假设客户端和服务端最多能存在或好蚂 1 分钟的时间差;服务端需要记录客户端所有的 nonce 请求集合,当有新的请求进来后,检测当前携带的 nonce 是否在集合中存在;
如果不存在,则记录该 nonce 的值,有效期为 1分钟;
如果存在,则说明客户端在一分钟内进行了重复的请求,则拒绝服务;
公有云API的认证方式
一般有以下几种认证方式:
Token认证
AK/SK认证
RSA非对称加密方式
Token认证
使用Token认证方式完成认证鉴权时,用户首先需要获取token,在调用接口时增加“X-XXX-Token”到业务接口请求消息头中。
流程
原理:任何请求,都附带token;服务端根据token判断请求是否合法。
缺点:若是报文在中途被劫持,那么token就泄露了,这时(token有效期内)黑客就能够构造任意的请求了。
2 AK/SK认证
2.1 AK/SK 原理
云主机需要通过宽乱使用Access Key Id / Secret Access Key加密的方法来验证某个请求的发送者身份。
Access Key Id(运巧改AK)用于标示用户,Secret Access Key(SK)是用户用于加密认证字符串和云厂商用来验证认证字符串的密钥,其中SK必须保密。 AK/SK原理使用对称加解密。
2.2 AK/SK使用机制
云主机接收到用户的请求后,系统将使用AK对应的相同的SK和同样的认证机制生成认证字符串,并与用户请求中包含的认证字符串进行比对。如果认证字符串相同,系统认为用户拥有指定的 *** 作权限,并执行相关 *** 作;如果认证字符串不同,系统将忽略该 *** 作并返回错误码。
2.3 流程
判断用户请求中是否包含Authorization认证字符串。如果包含认证字符串,则执行下一步 *** 作。
基于HTTP请求信息,使用相同的算法,生成Signature字符串。
使用服务器生成的Signature字符串与用户提供的字符串进行比对,如果内容不一致,则认为旁判认证失败,拒绝该请求;如果内容一致,则表示认证成功,系统将按照用户的请求内容进行 *** 作。
原理:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)