基于签名算法且简单安全的API授权机制
系统时发现对接的大多数平台的广告系统都是以token方式授权接口,而且这个token是一直不变的,由广告主提供,可以说这就是裸奔的接口,只不过这种接口对安全性要求不高,这只能防止恶意调用以及验证渠道的身份。 去年笔者写过一个API统一授权平台,为内部服务开放接口给第三方系统调用提供统一的授权管理,除了方便管理接口授权外,没有其它用途,但却要花成本部署。这应该是我做的一个最无意义的项目了。 今天介绍的API授权机制或许也是使用较为广泛的一种API接口授权机制,记得笔者以前做微信支付功能的时候,微信提供的支付接口也使用这种方式:签名。优势:简单、不影响性能、不需要额外成本。 这种授权方法的实现逻辑是,授权方为每个接入平台设置唯一的身份标识(key)以及设置独立密钥,其实也就相当于账号密码。要求接入方系统在每次发起请求都在请求头携带三个参数,分别是身份标识(key)、发起请求的时间戳、以及签名,授权方系统在接收到请求时校验签名,校验通过才放行请求。 校验签名的过程为,从请求头获取key和时间戳,再根据密钥通过相同算法生成签名(调用方与授权方使用相同签名算法),最后对比请求头获取的签名是否相等,如果是则校验成功,否则校验失败。 基于签名算法的授权方法实现过程如下: 授权方: 1.定义签名算法,提供签名生成算法给接入方,并为接入方生成密钥和身份标识; 2.在项目中拦截需要验证签名的接口,从请求头获取时间戳和身份标识,根据密钥和签名算法生成签名,将生成的签名与从请求头获取到的签名比较,如果相同则继续步骤3,否则拒绝请求;
3.请求时效性校验,用当前系统时间戳与从请求头获取到的时间戳比较,如果请求在有效时间范围内则放行请求,否则拒绝并响应签名过期。 (编辑:宿州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |