跨平台应用开发进阶 (三十二) :AK/SK 鉴权原理简介

一、前言
ak/sk是一种身份认证方式,常用于系统间接口调用时的身份验证,其中ak为Access Key ID,sk为Secret Access Key。客户端和服务端两者会协商保存一份相同的sk,其中sk必须保密。
AK: Access Key Id,⽤于标⽰⽤户;
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字符串与⽤户提供的字符串进⾏⽐对,如果内容不⼀致,则认为认证失败,拒绝该请求;如果内容⼀致,则表⽰认证成功,系统将按照⽤户的请求内容进⾏操作。
客户端:
服务端:
四、应用示例
设计ak/sk的请求参数
platform_type:标明请求方是谁,即该例子中的ak。time:请求时间,时间戳,将会被对应的sk配合加密算法进行加密,得到一个signature签名。sign:签名,使用 sk 配合对应的加密算法后进行加密得到的签名。
当发送请求时,请求端会带上这几个参数去请求接口,如请求
五、拓展阅读
版权声明: 本文为 InfoQ 作者【No Silver Bullet】的原创文章。
原文链接:【http://xie.infoq.cn/article/35d3ab4801aa12eeefbaab7a3】。文章转载请联系作者。








评论