首页 > 解决方案 > 无法使用 JFrog Artifactory REST API 获取加密密码。

问题描述

我编写了一个 Java 客户端,用于调用 jfrog api ( https://artifactory.abcdcompany.com/artifactory/api/security/encryptedPassword ),它可以提供加密密码。

选项1:

使用用户名和 API 密钥使用基本身份验证的过程如下。

  1. 创建了一个 inputString = "UserName:APIKey"
  2. 我们创建了一个codedString = Base64.getEncoder.encodeToString(inputString)。
  3. 创建了一个新字符串 stringToBeSent = "Basic " + encodedString;
  4. 然后我们将标头设置为 Request.setHeader(HTTPHeaders.Authoirization,stringToBeSent);

我能够连接到资源并获得 HTTP 状态 200。此外,我收到了响应,但在响应中,我收到的不是加密密码,而是我在步骤 1 中使用的相同 API 密钥以上。

选项 2:此外,我们尝试使用以下内容:request.setHeader("X-JFrog-Art-Api", "APIKey"); 但无济于事。我收到与发送相同的 API 密钥。

当通过 API 调用时,是否应该在服务器端启用任何东西以使工件以加密密码响应。

标签: artifactory

解决方案


由于 Artifactory 不在内部存储密码(仅密码的哈希值),因此如果您不给它纯文本密码,它就无法“给”您加密的密码。

该api中真正发生的是Artifactory的加密模块在您发送的字符串上被调用,它决定是否应该对其进行加密(基于在加密时修改的字符串的结构) - 如果是,则字符串被加密然后返回。

由于您正在发送加密模块知道它不会加密它的 api 密钥(因为没有意义)。

使用该 api 的正确方法是发送您的纯文本密码以通过加密模块对其进行加密(同样,Artifactory 不会在内部存储用户密码)。


推荐阅读