首页   注册   登录
 index90 最近的时间轴更新
index90

index90

V2EX 第 375112 号会员,加入于 2019-01-04 11:29:47 +08:00
今日活跃度排名 13559
index90 最近回复了
KPI 和 OKR 其实都是目标管理工具,最直观的区别是,前者和工资挂钩,后者只是和你“谈谈人生谈谈理想”。
“KPI 督促每个人快速解决问题”
这是对的,帮助大家专注于目标
“不考虑问题的深度以及重复性和潜在的风险“
这锅不应该由 KPI 来背,KPI 只是工具,KPI 的内容是人定的
“怎么破才好”
制定 KPI 的时候和管理者谈谈,或者坚定按照 KPI 字面执行
昨晚给奶奶买了台 note8
我猜,这是 LZ 看到的:
jsonObject -> sendRequest(jsonObject) -> client -> server -> handleRequest(jsonObject)

LZ 对 request body 签名的理解:
jsonObject -> sign(encode(jsonObject)) -> sendRequest(jsonObject) -> client -> server -> handleRequest(jsonObject) -> verify(encode(jsonObject), sign)

但实际上是:
jsonObject -> sendRequest(jsonObject) -> body = encode(jsonObject) -> post(body) -> client -> server -> recv(body) -> jsonObject = decode(body) -> handleRequest(jsonObject)

对 request body 签名的正确理解:
jsonObject -> sign(encode(jsonObject)) -> sendRequest(encode(jsonObject)) -> client -> server -> handleRequest(jsonString) -> verify(jsonString, sign)

@LinJunzhu 我尽力了
既然你上来是找答案的,别人已经给了你经过实践验证的答案,那就先实践,遇到问题再提问。你都没解决方案了,你还没试过别人给的方案就忙于反驳,这是真的如你提问中所说,想看看别人怎么做的么?
@chenqh 对,有些地方叫 appid,有些地方叫 clientid
@LinJunzhu
注意这一行:“Content-MD5: ……, 等同于对 body 数据的 md5sum”(简单理解,payload 实际上时一个 byte 数组,可以直接求 md5 )

劝你先忘掉微信 API 那个方案,它那个场景很有可能是因为安全原因,网关过滤了 header 和 query 的自定义字段,导致 signature 只能放在 body 中。

如果你还是坚持按照微信 API 那种模式,有个笨方法,就是把你要传递的 content 对象序列化后,当作字符串参数看待,即在原来的 body 上再包多一层:
{
content: string // "{\"key\":\"value\"}"
appid: string
sign: string
}
@fkdog lz 的需求其实是身份认证,是想知道这个请求是谁发出的,并且要有数字签名证明。
https 解决不了 C 公司冒充 A 公司向 B 公司发起转账申请,除非你启用 tls 的双向验证,这时候需要给每个请求方发放 client 证书,服务端还需要实现从证书中提取请求方 ID,才知道是谁发起的请求,实现难度比数字签名大一点。
给一个我正在使用的方案:

Signature = HMAC-SHA1( '您的 SecretKey', UTF-8-Encoding-Of( $StringToSign ) ) );

StringToSign = $HTTP-Verb + "\n" +
$URL + "\n" +
$Query + "\n" +
$Content-Type + "\n" +
$Content-MD5 + "\n" +
$Date + "\n" +
$AccessKey;

HTTP-Verb: 指 HTTP 请求方法如, GET, POST, PUT, DELETE
URL: 指所访问的资源路径如, /your/resource/path
Query: 指请求中的 Query 参数, 其构成规则如下:
对参数 key 进行升序排序
对于所有参数以 key+value 方式串联
Content-Type: 请求 Header 中的 Content-Type 值
Content-MD5: 请求 Header 中的 Content-MD5 值, 等同于对 body 数据的 md5sum
Date: 整形, 请求发生时的时间戳(用于防重放的,不需要可省略)
AccessKey: 用户自己的 AccessKey

最后在 request header 中增加:
x-singnature: $Signature
x-accesskey: $AccessKey
x-date: $Date
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1931 人在线   最高记录 5168   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 10ms · UTC 11:02 · PVG 19:02 · LAX 03:02 · JFK 06:02
♥ Do have faith in what you're doing.