无法使用JFrog Artifactory REST API获取加密的密码。

时间:2018-10-16 09:34:20

标签: artifactory

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

选项1:

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

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

我能够连接到资源并获得HTTP Status200。此外,我也得到了响应,但是在响应中,我没有使用加密的密码,而是收到了与我使用的相同的API密钥。上面的步骤1。

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

在通过API调用时,应在服务器端启用任何功能以使工件通过加密的密码进行响应。

1 个答案:

答案 0 :(得分:1)

由于Artifactory并未在内部存储密码(only hashes of passwords),因此如果不提供纯文本密码,就无法“提供”您的加密密码。

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

由于您要发送一个api密钥,加密模块知道该密钥不会对其进行加密(因为没有意义)。

使用该api的正确方法是发送您的纯文本密码,以使其由加密模块加密(再次,因为Artifactory不在内部存储用户密码)。