使用密码

时间:2015-05-25 21:19:23

标签: authentication jenkins

我正在尝试构建一个前端,以便某些功能需要与Jenkins后端进行通信。在我的前端,我希望用户能够使用Jenkins凭证(用户名和密码,使用Kerberos)登录并将这些凭据传递给我的Jenkins服务器,我想要检索可用于制作的令牌进一步的API调用Jenkins服务器而不在每个请求中公开密码。

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

我也知道我可以通过访问Jenkins网页找到我的令牌,使用我的密码登录,转到我的个人资料页面并在那里找到令牌。然后,我可以将其编码为功能强大的HTTP基本身份验证标头。这很好。

然而,我似乎无法找到一种体面的方式来使用密码进行编程验证,交换令牌的密码。我能够完成的最好的工作是使用https://<JENKINS_HOST>/me/configure基本auth标头对user:password的个人资料页面进行GET,然后解析生成的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页面,只需将/ api / json附加到URL即可找到等效的JSON API,但是/me/configure/api/json只会向我抛出404。有没有人知道是否有这样的方式?到目前为止,我发现的所有文档都告诉您转到/ me / configure网页并手动查找,这对于想要传递身份验证的客户来说没有任何意义。

1 个答案:

答案 0 :(得分:0)

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

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

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