准备工作
SDK、客户端私钥、appID、服务器公钥
客户端私钥准备
你将生成一组RSA私钥/公钥,后续的文档中使用【客户端App私钥】+【客户端App公钥】作为称呼,客户端App公钥需要上传到DABank服务器,你的所有请求都将使用这个客户端App私钥签名,DABank服务器使用你的客户端App公钥对签名进行验证,确保请求没有被篡改或者伪造。
额外说明的是,openssl生成的私钥默认使用pkcs1格式,为了减少sdk解析私钥的依赖,你需要将私钥转换为PKCS8格式后使用,使用下述的代码生成私钥+公钥:
#生成私钥(PKCS1格式)
openssl genrsa -out app_private_key.pem 2048
#生成公钥,公钥需要上传到DABank服务器
openssl rsa -in app_private_key.pem -pubout -out app_public_key.pem
#将私钥转换为PKCS8格式,这个是你的SDK实际使用的内容
openssl pkcs8 -topk8 -inform PEM -outform PEM -in app_private_key.pem -out priv8.pem -nocryptAppID与服务器公钥
你的app有一个appId,所有的请求中都需要携带这个appId,对应字段key 。
DABank服务器为每个app 生成了一组RSA私钥+公钥,后续的文档中使用【服务器端App私钥】【服务器端App公钥】作为称呼你需要下载这个服务器端App公钥。在必要的时机,DABank向你的服务器发起回调请求,DABank使用服务器端App私钥对回调请求进行签名,你需要使用下载的服务器端App公钥对请求进行验证,确保请求没有被篡改或者伪造。
Java SDK
你可以从open平台登录后下载Java SDK jar文件,目前暂时没有提供maven依赖,如果你使用了maven或其他依赖管理工具,建议的做法是将jar文件放到工程目录中并上传到版本管理工具,使用脚本安装到本地依赖仓库。
由于SDK使用了Base64和lamda特性,使用SDK需要至少JDK 8,出于一些考虑,你无法获得SDK的源代码,如果你需要在JDK 6/7环境下使用,我建议你反编译我们的sdk后参考改动。
为了实现0依赖和尽可能小的体积,SDK没有直接包含或依赖JSON库和http库,我们定义了JsonProvider(json parser/serializer)和HttpProvider接口, 你至少需要提供一个JsonProvider 实现才可以使用。如果没有提供http实现,SDK默认使用HttpURLConnection 发起http请求,我们建议你提供一个自己的实现,以方便更细粒度的控制http请求,比如连接池、超时、日志等。
下面是JsonProvider的定义:
需要说明,字段需要处理为snake_case (lower_case_underscore), 下面的代码列举了gson和jackson的实现: