api网关作为后端服务的代理,提供网络请求的反向代理,需要保证http请求的安全性。根据实际服务对安全性的不同要求,一般可以采用http协议结合认证方式来保证报文防篡改,或采用https协议保证数据传输的安全。
本文主要介绍http的几种认证方式、https的原理以及https私有证书的管理扩展。
http
http协议下,传输的报文是明文传输,对于敏感数据,需要服务提供方和消费方约定加密方式,对敏感数据进行加密后传输。采用一定的认证方式,保证客户端和服务端之间的报文一定程度上不被篡改。这些认证方式并不能完全保证信息安全,仍存在风险,对于安全要求高的服务需采用https协议。
Basic认证
basic认证方式:
客户端在http请求的时候,将accessKey信息和accessSecret信息以’:'拼接,并进行Base64加密得到Authorization报文头,添加在header中进行http请求。
服务端在收到请求后,对Authorization报文头进行Base64解密,提取出accessKey和accessSecret信息,并进行数据库校验,判断请求方是否合法。
Token认证
token认证是在http请求前,先根据用户名和密码向服务器请求一个token,token一般有一定的时效性。在后续请求时,把这个token以query参数的形式传给服务端,服务端根据这个token值来校验请求的合法性。
Digest认证
digest认证相比于basic认证和token认证比较复杂。摘要的格式、采用的算法可以由服务端约定。
客户端:
- 将httpMethod parameters timestamp等信息进行拼接得到要加密的摘要信息
- 将要加密的摘要和accessSecret进行加密,比如采用hmac-sha256算法
- 加密后的信息再进行Base64加密得到signature,
- 将算法、时间戳、accessKey信息和signature组成 Authorization加入到http的header中进行http请求。
服务端:
- 从http的header中取出Authorization信息,进行解密
- 从