我已经编写了一个Java客户端来调用jfrog api(https://artifactory.abcdcompany.com/artifactory/api/security/encryptedPassword),该客户端可以提供加密的密码。
选项1:
遵循以下使用用户名和API密钥使用基本身份验证的过程。
我能够连接到资源并获得HTTP Status200。此外,我也得到了响应,但是在响应中,我没有使用加密的密码,而是收到了与我使用的相同的API密钥。上面的步骤1。
选项2: 另外,我们尝试使用以下方法: request.setHeader(“ X-JFrog-Art-Api”,“ APIKey”);但无济于事。我收到与发送相同的API密钥。
在通过API调用时,应在服务器端启用任何功能以使工件通过加密的密码进行响应。
答案 0 :(得分:1)
由于Artifactory并未在内部存储密码(only hashes of passwords),因此如果不提供纯文本密码,就无法“提供”您的加密密码。
该api中真正发生的是在您发送的字符串上调用了Artifactory的加密模块,并且它决定是否对其进行加密(基于加密后修改的字符串的结构)-如果是,则字符串被加密然后返回。
由于您要发送一个api密钥,加密模块知道该密钥不会对其进行加密(因为没有意义)。
使用该api的正确方法是发送您的纯文本密码,以使其由加密模块加密(再次,因为Artifactory不在内部存储用户密码)。