【问题标题】:What's the difference between Authentication Token and API Token in Jenkins remote build?Jenkins远程构建中的Authentication Token和API Token有什么区别?
【发布时间】:2017-08-07 23:29:02
【问题描述】:

我正在尝试从 C# 触发 Jenkins 构建,使用来自 here. 的此链接我正在尝试从 .NET 调用参数化的 Jenkins 作业。

在 Jenkins 作业中,在“构建触发器”部分下,选中“远程构建触发器(例如,从脚本)”并提供身份验证令牌,如

在我的 C# 代码中,我被要求提供用户名和 API 令牌来调用 Jenkins 构建。 (_username, _apiToken 来自下面)

 private static HttpWebRequest CreateHttpRequest(string URLName)
    {

        //Creating HTTP web request
        var httpWebRequest = (HttpWebRequest)WebRequest.Create(URLName);

        httpWebRequest.ContentType = "application/x-www-form-urlencoded";
        httpWebRequest.Method = "POST";

        byte[] credentialBuffer =
            new UTF8Encoding().GetBytes(
             _username + ":" +
            _apiToken);

        httpWebRequest.Headers["Authorization"] =
           "Basic " + Convert.ToBase64String(credentialBuffer);

        httpWebRequest.PreAuthenticate = true;
        return httpWebRequest;
    }

这个 API 令牌,我通过导航到 [Jenkins 服务器 URL]/me/configure 从 Jenkins 服务器获取它,并在我的代码中提供它。

现在,当我尝试调用启用了此远程构建触发器的此 Jenkins 作业时,我通过代码收到 Forbidden/Not found 错误。当我尝试使用 API 令牌手动导航该 URl 时,它显示无效令牌。这可能是因为我之前提到的“身份验证令牌”吗?

我问这个,因为如果我取消选中该选项并从代码中调用 Jenkins 作业,则根本没有问题。

【问题讨论】:

    标签: c# jenkins


    【解决方案1】:

    位于 jenkins/me/configure 中的 API 令牌是您在对 Jenkins API 进行 REST 调用时用来验证自己的东西,如工具提示中所述:

    此 API 令牌可用于在 REST API 调用中对自己进行身份验证。


    身份验证令牌是一种提供速记 URL 的方法,以便您可以轻松触发构建,如工具提示中所述:

    如果您想通过访问特殊的预定义 URL(方便脚本)来触发新构建,请启用此选项。


    如果您通过 REST 调用 Jenkins,则无需使用身份验证令牌,但您将需要您的 API 令牌来验证自己是发出请求的人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-13
      • 2017-03-15
      • 2017-11-20
      • 2012-09-19
      • 2020-06-11
      • 1970-01-01
      • 2021-04-28
      • 1970-01-01
      相关资源
      最近更新 更多