我正在尝试将指标推送到基本认证推送网关。但我遇到了401 -未经授权
所以我安装了一个本地推流网关,并给它配置了基本鉴权:
密码按照此处所述进行加密:https://github.com/prometheus/exporter-toolkit/blob/master/docs/web-configuration.md#about-bcrypt
basic_auth_users:
pushgateway: $2y$10$d6t8zGfPMZBLFLpoClFcReK6z4gxkDr2H8jnEfOaUpjpLX4.tbyTS%在我的代码中,我按如下方式指定用户名和密码:
this.pushGateway.setConnectionFactory(new BasicAuthHttpConnectionFactory("pushgateway","<password>"));上面的密码是加密后放入推流网关配置中的密码。
这里的文档(https://github.com/prometheus/client_java#with-basic-auth)没有提到任何关于加密密码的内容,密码是以明文形式提供的。
有人能指出我遗漏了什么吗?
发布于 2021-08-12 13:10:40
正如您概述的文档中所述,bcrypt过程仅适用于使用exporter-toolkit的导出器,而Java客户端采用纯文本形式的参数。
背后的原因是bcrypt是为密码存储而设计的。bcrypt在内部为您生成一个salt和从纯文本重新计算散列所需的各种信息。
信息由$分隔,salt是散列的22个第一个字符;在您的示例中:
2y是散列算法version10是algorithmd6t8zGfPMZBLFLpoClFcRe的强度是salt在向导出器进行身份验证时,basic-auth将以纯文本形式发送密码,可以使用bcrypt在服务器端对其进行验证。
如果您从客户端发送散列密码,导出器(服务器)将不知道如何恢复明文密码(它是散列密码,而不是加密密码)。
如果秘密在服务器端泄露,salt (假设)会确保密码很难恢复。在客户端,您负责确保明文密码不会泄露。
https://stackoverflow.com/questions/68530137
复制相似问题