artifactory - 无法使用 JFrog Artifactory REST API 获取加密密码。
问题描述
我编写了一个 Java 客户端,用于调用 jfrog api ( https://artifactory.abcdcompany.com/artifactory/api/security/encryptedPassword ),它可以提供加密密码。
选项1:
使用用户名和 API 密钥使用基本身份验证的过程如下。
- 创建了一个 inputString = "UserName:APIKey"
- 我们创建了一个codedString = Base64.getEncoder.encodeToString(inputString)。
- 创建了一个新字符串 stringToBeSent = "Basic " + encodedString;
- 然后我们将标头设置为 Request.setHeader(HTTPHeaders.Authoirization,stringToBeSent);
我能够连接到资源并获得 HTTP 状态 200。此外,我收到了响应,但在响应中,我收到的不是加密密码,而是我在步骤 1 中使用的相同 API 密钥以上。
选项 2:此外,我们尝试使用以下内容:request.setHeader("X-JFrog-Art-Api", "APIKey"); 但无济于事。我收到与发送相同的 API 密钥。
当通过 API 调用时,是否应该在服务器端启用任何东西以使工件以加密密码响应。
解决方案
由于 Artifactory 不在内部存储密码(仅密码的哈希值),因此如果您不给它纯文本密码,它就无法“给”您加密的密码。
该api中真正发生的是Artifactory的加密模块在您发送的字符串上被调用,它决定是否应该对其进行加密(基于在加密时修改的字符串的结构) - 如果是,则字符串被加密然后返回。
由于您正在发送加密模块知道它不会加密它的 api 密钥(因为没有意义)。
使用该 api 的正确方法是发送您的纯文本密码以通过加密模块对其进行加密(同样,Artifactory 不会在内部存储用户密码)。
推荐阅读
- python - 从 Pandas 系列创建 Python Spacy NLP 对象的最佳方法
- java - java while (resultset.next()) 不返回同一列中的所有数据
- passwords - 如何从 Mule 3 的属性文件中读取具有特殊字符的密码?
- c++ - 与 BOOST Range 的接口
- java - Mockito 3 需要但未调用
- unity3d - 如何向我的项目添加着色器图形?
- mule - Dataweave 转义双引号和,同时读取 json 并写入 csv
- flutter - 如何在颤动中使用渲染对象在画布上添加图像?
- windows - 打开 Power Shell 或 VSC 时出错
- javascript - 更新数据时,带有ajax的表单验证codeigniter 3始终为false