Jenkins远程构建中的身份验证令牌和API令牌有什么区别?

时间:2017-07-21 07:21:34

标签: c# jenkins

我正试图从C#触发Jenkins构建,使用here.中的这个链接我试图从.NET调用一个参数化的Jenkins Job。

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

在我的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 Job,则根本没有问题。

1 个答案:

答案 0 :(得分:1)

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

  

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

Authenticiation Token是一种提供速记URL的方法,以便您可以轻松触发构建,如工具提示中所述:

  

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

如果您通过REST调用Jenkins,则无需使用Authenticiation Token,但是您需要使用您的API令牌作为发出请求的身份进行身份验证。