如何使用用户凭据远程登录jenkins?

时间:2016-12-16 14:27:19

标签: asp.net authentication jenkins jobs

目前,在.net网站上点击按钮后,我会触发多个带参数的作业。然后由匿名用户启动该作业。

这是触发工作的代码:

protected void Btn_Click(object sender, EventArgs e)
    {


        string userName = txtUser.Text;
        string password = txtPassword.Text;
        userName = Base64Util.Base64Encode(userName);
        password = Base64Util.Base64Encode(password);

        string url = Constants.build_jenkins_url + "/job/BUILD1/buildWithParameters?token=authtoken&Checkpoint=" + checkpointInput.Text + "&Git files=false" + "&SHA=None" + "&Build CST=true" + "&CST name=" + CSTNameInput.Text + "&Clean build=true" + "&Run sequences=false&user=" + userName + "&passwd=" + password;
        HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
            webRequest.Method = "POST";
        HttpWebResponse resp = (HttpWebResponse)webRequest.GetResponse();
            Response.Redirect(Constants.build_jenkins_url, "_blank", "fullscreen=1,menubar=yes,toolbar=yes,scrollbars=yes,status=yes,titlebar=yes");

        }

我想用用户凭据触发作业。在那种情况下,詹金斯会告诉我,谁开始了詹金斯的工作。你们有任何想法如何实现这个目标吗?

2 个答案:

答案 0 :(得分:0)

查看有关HttpWebRequest.Credentials的信息。

答案 1 :(得分:0)

设置基本身份验证,它将起作用:

URL urldemo = new URL(buildUrl);
URLConnection yc = urldemo.openConnection();
String userpass = userName + ":" + password;
String basicAuth = "Basic " + javax.xml.bind.DatatypeConverter.printBase64Binary(userpass.getBytes());

yc.setRequestProperty ("Authorization", basicAuth);
BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));