Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Authentication 使用密码通过JSON API验证Jenkins_Authentication_Jenkins - Fatal编程技术网

Authentication 使用密码通过JSON API验证Jenkins

Authentication 使用密码通过JSON API验证Jenkins,authentication,jenkins,Authentication,Jenkins,我正在尝试构建一个前端,对于某些功能,它需要与Jenkins后端通信。在我的前端,我希望用户能够使用Kerberos使用Jenkins凭据用户名和密码登录,并将其传递到我的Jenkins服务器,我希望在该服务器上检索令牌,该令牌可用于对Jenkins服务器进行进一步的API调用,而无需在每次请求中披露密码 我知道为了能够进行Jenkins API调用,我需要使用HTTP Basic auth,它将同时接受user:token和user:password。不过,我想避免在每个请求中发送密码 我还知

我正在尝试构建一个前端,对于某些功能,它需要与Jenkins后端通信。在我的前端,我希望用户能够使用Kerberos使用Jenkins凭据用户名和密码登录,并将其传递到我的Jenkins服务器,我希望在该服务器上检索令牌,该令牌可用于对Jenkins服务器进行进一步的API调用,而无需在每次请求中披露密码

我知道为了能够进行Jenkins API调用,我需要使用HTTP Basic auth,它将同时接受user:token和user:password。不过,我想避免在每个请求中发送密码

我还知道,我可以通过进入Jenkins网页、使用密码登录、进入我的个人资料页面并在那里找到我的令牌来找到我的令牌。然后,我可以将其base64编码到一个正常工作的HTTP基本身份验证头中。这个很好用

然而,我似乎找不到一个合适的方法来通过编程使用密码进行身份验证,用密码交换令牌。我所能做到的最好的事情就是在https:///me/configure 使用user:password-basic-auth头,然后解析api令牌的结果HTML,这显然感觉不太可靠:

$ curl -v --silent https://<USER:PASS@JENKINS_HOST>/me/configure 2>1
    | sed -n 's/.*apiToken" value="\([^"]*\).*/\1/p'

<TOKEN>

我期望/希望找到一个用于身份验证的API端点,它将接受用户/密码并以JSON格式返回令牌。对于大多数Jenkins页面,JSON API等价物是通过简单地将/API/JSON添加到URL中找到的,然而/me/configure/API/JSON只是向我抛出了一个404。有人知道有没有这样的方法吗?到目前为止,我找到的所有文档都只是告诉您转到/me/configure网页并手动查找,这对于希望传递身份验证的客户机来说没有任何意义。

Jenkins用户API令牌不会通过API公开

我只需要从Jenkins手动获取一次API令牌,并对其进行硬编码,而不是硬编码您的密码,因为除非您显式重置它,否则API令牌永远不会更改


或者,您可以使用用户名和密码进行身份验证,并存储来自Set Cookie头的结果值。在随后的API调用中发送cookie值将按预期工作。

谢谢您的回答。但是,如果我想代表访问我的服务的最终用户进行Jenkins API调用,那么手动获取令牌是没有意义的,因为需要为调用我的API的每个用户获取令牌。但是,另一种方法可能是代表单个专用服务用户而不是最终用户进行所有Jenkins API调用。