看资料的一个坑


influxdb 踩的坑

项目讨论的时候,涉及到了对influxdb访问加鉴权的问题,就研究了一下influxdb相关部分的文档:influxdb Authentication
文档描述了JWT 的交互方式,但是我看的过程很困惑。

疑惑原因:JWT 的具体实现有多种签名方式,但是文档里提到只是需要配置一个key , 就可以交互。我猜测是不是influxdb 可以自动识别所有相关签名方式,分类验证签名,这样好像很先进, 但是会咋实现呢???
而且还有不对称加密的鉴权呢,类似RSA一类,只配置一个key 咋行???

网上查了挺多资料,困惑也没有得到解答,后面仔细研究了一下源码:

1
2
3
4
// influxdb/services/httpd/handler/authenticate()
func authenticate(inner func(http.ResponseWriter, *http.Request, meta.User), h *Handler, requireAuthentication bool) http.Handler {
...
}

疑惑顿消, 原来influxdb 只支持HMAC 加密,这是一种对称加密,因此只需要配置一个key, 就可以按照JWT的方式交互。

教训: 文档有时候会不详细,或者存在理解偏差, 这时候如果可以看一看代码,从源头分析一下,未必不是一种好的方式。