首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >推送网关抛出401 -未经授权

推送网关抛出401 -未经授权
EN

Stack Overflow用户
提问于 2021-07-26 20:47:22
回答 1查看 118关注 0票数 0

我正在尝试将指标推送到基本认证推送网关。但我遇到了401 -未经授权

所以我安装了一个本地推流网关,并给它配置了基本鉴权:

密码按照此处所述进行加密:https://github.com/prometheus/exporter-toolkit/blob/master/docs/web-configuration.md#about-bcrypt

代码语言:javascript
复制
basic_auth_users:
  pushgateway: $2y$10$d6t8zGfPMZBLFLpoClFcReK6z4gxkDr2H8jnEfOaUpjpLX4.tbyTS%

在我的代码中,我按如下方式指定用户名和密码:

代码语言:javascript
复制
this.pushGateway.setConnectionFactory(new BasicAuthHttpConnectionFactory("pushgateway","<password>"));

上面的密码是加密后放入推流网关配置中的密码。

这里的文档(https://github.com/prometheus/client_java#with-basic-auth)没有提到任何关于加密密码的内容,密码是以明文形式提供的。

有人能指出我遗漏了什么吗?

EN

回答 1

Stack Overflow用户

发布于 2021-08-12 13:10:40

正如您概述的文档中所述,bcrypt过程仅适用于使用exporter-toolkit的导出器,而Java客户端采用纯文本形式的参数。

背后的原因是bcrypt是为密码存储而设计的。bcrypt在内部为您生成一个salt和从纯文本重新计算散列所需的各种信息。

信息由$分隔,salt是散列的22个第一个字符;在您的示例中:

  • 2y是散列算法version
  • 10是algorithm
  • d6t8zGfPMZBLFLpoClFcRe的强度是salt
  • remainder是BCrypt

在向导出器进行身份验证时,basic-auth将以纯文本形式发送密码,可以使用bcrypt在服务器端对其进行验证。

如果您从客户端发送散列密码,导出器(服务器)将不知道如何恢复明文密码(它是散列密码,而不是加密密码)。

如果秘密在服务器端泄露,salt (假设)会确保密码很难恢复。在客户端,您负责确保明文密码不会泄露。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68530137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档