调用api客户端程序,需要在header处发送 

API_ID: 1

API_TIME: 时间戳

API_HASH:  $clienthash

$user="username";

$publicKey='hello';

$privateKey=  hash_hmac('sha256', $user, $publicKey); 需要先把客户端程序的privateKey存入数据库.

$data=json字符串.

$clienthash = hash_hmac('sha256', API_TIME.API_ID.$data, $privateKey);

API端验证:

$serverHash = hash_hmac('sha256', API_TIME.API_ID.$data, $privateKey);//到数据库查找此客户端的privateKey;

如果$clientHash === $serverHash 进入第二层验证

如果服务器时间和API_TIME在设定的时间段内,则验证通过.

 

第2种方式:

1. 设定一个密钥比如key = ‘2323dsfadfewrasa3434'。 2. 这个key 只有发送方和接收方知道。3. 调用时,发送方,组合各个参数用密钥 key按照一定的规则(各种排序,MD5,ip等)生成一个access_key。一起post提交到API接口。4. 接收方拿到post过来的参数以及这个access_key。也和发送一样,用密钥key 对各个参数进行一样的规则(各种排序,MD5,ip等)也生成一个access_key2。5. 对比access_key 和access_key2 。一样。则允许操作,不一样,报错返回或者加入黑名单。

 

来自 http://blog.p2hp.com/archives/1815

最后更新于 2017年7月14日

设计不使用oauth身份验证的安全restful api
标签: