1 摘要签名认证方式
API网关提供前端签名及验签能力,前端签名及验签主要两点用途:
验证客户端请求的合法性,确认请求中携带授权后的AK生成的签名;
防止请求数据在网络传输过程中被篡改。
API的拥有者可以在API网关控制台的应用管理页面生成APP,每个APP会携带一对签名密钥(APP Key和APP Secret),API拥有者将API授权给指定的APP(APP可以是API拥有者颁发或者API调用者所有)后,API调用者就可以用APP的签名密钥来调用相关的API了。
客户端调用 API 时,需要使用已授权签名密钥对请求内容的关键数据进行加密签名计算,并且将APP Key和加密后生成的字符串放在请求的 Header 传输给API网关,API网关会读取请求中的APP Key的头信息,并且根据APP Key的值查询到对应的APP Secret的值,使用APP Secret对收到的请求中的关键数据进行签名计算,并且使用自己的生成的签名和客户端传上来的签名进行比对,来验证签名的正确性。只有签名验证通过的请求才会发送给后端服务,否则API网关会认为该请求为非法请求,直接返回错误应答。
API网关只会验证安全认证类型为“阿里云APP”或者“OpenID Connect & 阿里云APP”两种类型的API请求的签名,其他安全类型的API请求不会验证签名。
2 使用SDK调用
签名计算的详细实现可以参考API网关提供的SDK,在API网关控制台的下面两个页面中可以下载Java/Android/Objective-C的带源码的SDK:
开放API-SDK/文档自动生成
调用API-已授权的API的SDK
具体可参考使用SDK调用API
3 摘要签名认证方式原理说明
3.1签名生成流程和认证流程概述
3.1.1 前置条件
API的调用方需要在调用API之前获取到已经授权给对应API的签名密钥对:
APP Key
APP Secret