【问题标题】:How to create and delete a user from Jenkins through REST API?如何通过 REST API 从 Jenkins 创建和删除用户?
【发布时间】:2018-08-27 12:26:08
【问题描述】:

Jenkins 是否公开了任何 REST API 来创建和删除用户?

【问题讨论】:

    标签: jenkins jenkins-pipeline jenkins-cli


    【解决方案1】:

    正如 Andrew 在他的 answer 中所说,没有办法通过 REST API 轻松完成。我目前面临同样的问题,并想出了某种网络抓取。这是必需的,因为 Jenkins 最终希望通过用户删除 POST 请求提供 Jenkins-Crumb。

    当您想要人员 > 点击用户 ID > 删除 用户时,您必须确认您确实要删除该用户。除了那个明显的 Yes 按钮之外,还有一些隐藏的表单字段,其中一个名为 Jenkins-Crumb。当您单击 Yes 按钮时,该字段的值将与 /doDelete POST 请求一起发送。

    我想出的解决方案是在 GETting https://<your-jenkins-url>/user/<username-to-delete>/delete 之后读取 Jenkins-Crumb,然后使用作为表单数据提供的 Jenkins-Crumb 向 https://<your-jenkins-url>/user/<username-to-delete>/doDelete 发出 POST 请求。虽然 Jenkins-Crumb 表单字段是通过 JavaScript 填充的,但无需执行 JavaScript,因为脚本直接作为 <script>crumb.init("Jenkins-Crumb", "jenkins-crumb-value");</script> 包含在 HTML 源代码中,它可以是 matched via RegEx

    在 Python 中,这可能看起来像

    import re, requests, sys
    
    with requests.Session() as s:
        s.auth = (ADMIN_USERNAME, ADMIN_APIKEY_OR_PASSWORD)
        url = "https://YOUR_JENKINS_URL/user/USER_TO_DELETE/delete"
        response = s.get(url)
    
        if not response.ok:
            sys.exit("HTTP error {} while accessing Jenkins at {}. Exiting.".format(response.status_code, url))
    
        re_match = re.search(r'<script>crumb\.init\("Jenkins-Crumb", "(\w+)"\);<\/script>', response.text)
        if not re_match:
            sys.exit("Couldn't get required Jenkins-Crumb. Exiting.")
    
        jenkins_crumb = re_match.group(1)
    
        url = "https://YOUR_JENKINS_URL/user/USER_TO_DELETE/doDelete"
        data = { "Jenkins-Crumb": jenkins_crumb }
        response = s.post(url, params=data)
    
        if not response.ok:
            sys.exit("Couldn't delete user")
    
        s.close()
    

    【讨论】:

      【解决方案2】:

      目前没有。许多页面,但并非 Jenkins 中的所有页面都通过将 api/json 添加到 Jenkins URL 的末尾来公开 json(可以使用)。

      Jenkins 中的安全相关页面目前不属于 REST API。

      昨天说(在我写这个答案时)Role Strategy Plugin 发布了版本2.90,增加了一些 REST API 功能。

      也许这是更多的开始。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-05
        • 1970-01-01
        相关资源
        最近更新 更多