【问题标题】:Basic Auth with Jenkins http-request-plugin使用 Jenkins http-request-plugin 进行基本身份验证
【发布时间】:2017-05-25 01:49:27
【问题描述】:

我正在尝试使用“Http 请求插件”进行简单的 POST 请求。我的问题是让凭据正常工作。我设置了一个全局凭据,user:pass

但是在我的代码中尝试这个

withCredentials([usernameColonPassword(credentialsId: 'akamai', variable: 'akamai')]) {

    def response = httpRequest url: requestUrl, contentType: requestContentType, httpMode: requestHttpMode, requestBody: requestContent, authentication: akamai
    echo "Status: ${response.status}\nContent: ${response.content}"
}

结果

java.lang.IllegalStateException: Authentication 'user:pass' doesn't exist anymore

【问题讨论】:

    标签: groovy jenkins-plugins jenkins-pipeline


    【解决方案1】:

    HTTP 请求插件 v1.8.18 now supports credentials in the Credentials Plugin(HTTP 请求插件 v1.8.18 now depends on v2.1.3 of the Credentials Plugin)。

    要使用 Jenkins 凭据执行 HTTP 请求,您可以使用以下代码:

    def response = httpRequest authentication: 'credentialsID', url: "http://www.example.com"
    

    credentialsID 是 Jenkins 中凭据的 ID:

    “配置系统”>“HTTP 请求”下的基本凭据现在声明基本/摘要式身份验证已弃用,改为使用 Jenkins 凭据:

    【讨论】:

    • 我做了和你在答案中提到的一样的事情,但是我得到了 error-java.lang.IllegalStateException: Authentication 'CredentialsID' doesn't exist again
    • 您是否在 Jenkins 中存储了 ID 为“CredentialsID”的凭据?如果您在 Jenkins 中查看凭证,它将显示一个表格,其中包含(除其他外)每个存储凭证的名称和 ID。这是您要使用的 ID 字段
    • Jenkins 不提供创建基本身份验证凭据的功能。您创建了哪种类型的凭据来解决已弃用的说明?
    • 它只适用于用户名和密码版本,不适用于用户名和私钥
    • 如果您仍然需要为基本身份验证传递“明文”凭据(例如,您将它们存储在 Vault 中,而不是 Jenkins 凭据中),您可以像在 issues.jenkins-ci.org/browse/JENKINS-39744 中那样制作 Authorization 标头另请注意customHeaders 参数现在接受 maskValue 以隐藏用户名:密码的 base64,请参阅 jenkins.io/doc/pipeline/steps/http_request 了解更多信息。
    【解决方案2】:

    Http Request Plugin 的凭据不由凭据插件管理,而是在配置系统 -> HTTP 请求下管理,如图所示。

    【讨论】:

    • 现在已弃用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    • 2017-06-13
    • 2013-05-30
    • 1970-01-01
    相关资源
    最近更新 更多