zozoh / walnut

项目代号为 walnut
Apache License 2.0
5 stars 0 forks source link

httpapi 支持签名算法,以便提高安全性 #47

Open zozoh opened 9 years ago

zozoh commented 9 years ago

首先, api 文件里,支持元数据 api_sign_key 值可以是 @dftkey 或者某个确认的值

如果有这种元数据的 api 必须需要签名验证

客户端需要对 POST 的 body 用 api_sign_key 以及 一个随机数进行 MD5 签名,将结果记录到 header 里

walnut-api-sign : "xxxxx"        # MD5 签名的结果
walnut-api-salt : "467782.."    # 一个随便什么随机数

服务器会根据 walnut-api-salt,对 POST 的body进行验算,看看是否与 walnut-api-sign 相等

当然,如果是 GET请求,则会对整个 QueryString (字符串以 ? 开始, 不包括#后面的内容) 进行签名验算

~/.regapi/apiconf 文件可以给出更多的配置信息

default_api_key : "xxxxxxxx",     // 选,如果没声明,那么 @dftkey 的 api 就不可工作
refer_url_pattern : $REGEX,      // 选,描述了 refer_url 必须符合什么规则
remote_pattern : $REGEX,        // 选,  描述了可以允许哪些客户端
wendal commented 9 years ago

类似微信的签名?

zozoh commented 9 years ago

嗯,这几天弄了一下微信支付,由此想到的

wendal commented 9 years ago

微信支付? 弄好了?

zozoh commented 9 years ago

嗯,弄好了公众号支付 就是扩充以下微信命令 cmd_weixin

# 发起支付请求
weixin -pay id:请求的JSON文件ID | httpc post https://path/to/weixin/api 

# 验证支付的回调
weixin -payre id:httpapi收到的回调请求文件ID