使用 REST API 针对 Jira 进行 C# 凭据验证

标签 c# jira jira-rest-api

我正在开发一个 C# Windows 窗体应用程序,我希望能够针对 Jira 测试用户的凭据。基本上,用户会输入他们的用户名和密码,单击“确定”,程序会告诉他们他们的凭据是否被接受。

我已经有了工作代码(见下文),它通过 HttpWebRequest 使用基本身份验证来创建新票证(也称为问题)、关闭票证、添加观察者等 - 所以我认为这很容易,但我正在努力解决它。

作为模拟,您可以使用 System.DirectoryServices.AccountManagement 命名空间非常轻松地对 Active Directory 进行凭据检查。基本上,方法 authenticateAD() 将简单地返回 true 或 false:

private bool authenticateAD(string username, string password)
{
    PrincipalContext pc = new PrincipalContext(ContextType.Domain, "example.com");
    bool isValid = pc.ValidateCredentials(username,password);
    return isValid;
}

这正是我想用 Jira 做的事情。

作为引用,这是我用来在 jira 中添加/关闭/更新票证的代码 - 也许可以修改它来做我想做的事?

private Dictionary<string, string> sendHTTPtoREST(string json, string restURL)
{
    HttpWebRequest request = WebRequest.Create(restURL) as HttpWebRequest;
    request.Method = "POST";
    request.Accept = "application/json";
    request.ContentType = "application/json";
    string mergedCreds = string.Format("{0}:{1}", username, password);
    byte[] byteCreds = UTF8Encoding.UTF8.GetBytes(mergedCreds);
    request.Headers.Add("Authorization", "Basic " + byteCreds);
    byte[] data = Encoding.UTF8.GetBytes(json);
    try
    {
        using (var requestStream = request.GetRequestStream())
        {
            requestStream.Write(data, 0, data.Length);
            requestStream.Close();
        }
    }
    catch(Exception ex)
    {
        displayMessages(string.Format("Error creating Jira: {0}",ex.Message.ToString()), "red", "white");
        Dictionary<string, string> excepHTTP = new Dictionary<string, string>();
        excepHTTP.Add("error", ex.Message.ToString());
        return excepHTTP;
    }
    response = (HttpWebResponse)request.GetResponse();
    var reader = new StreamReader(response.GetResponseStream());
    string str = reader.ReadToEnd();
    var jss = new System.Web.Script.Serialization.JavaScriptSerializer();
    var sData = jss.Deserialize<Dictionary<string, string>>(str);

    if(response.StatusCode.ToString()=="NoContent")
    {
        sData.Add("code", "NoContent");
        request.Abort();
        return sData;
    }
    else
    {
        sData.Add("code", response.StatusCode.ToString());
        request.Abort();
        return sData;
    }
}

谢谢!

最佳答案

尝试访问 JIRA 的根页面并查看是否收到 HTTP 403 错误如何?

        try
        {
            // access JIRA using (parts of) your existing code
        }
        catch (WebException we)
        {
            var response = we.Response as HttpWebResponse;
            if (response != null && response.StatusCode == HttpStatusCode.Forbidden)
            {
                // JIRA doesn't like your credentials
            }
        }

关于使用 REST API 针对 Jira 进行 C# 凭据验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44609036/

相关文章:

JIRA REST 客户端 : issue. getattachments() 返回 null

python - Jira POST 和 PUT Rest 调用从 Python 返回错误 400

c# - 系统.Web.HttpCompileException :The type '<>' is defined in an assembly that is not referenced

c# - 在一个Producer和Multi-Consumer实现中等待所有Consumer都处于waiting状态

java - Bundlecom.jira.test.MyProject 要求 osgi.wiring.package 中 Unresolved 约束

jira - 我在 JIRA 中评论的问题

java - 无法解决 jira-rest-java-client 依赖性

c# - 在 datepicker c# Winforms 上引发验证事件

C# 不以 4 个字符开头的字符串的正则表达式

api - JIRA SOAP API : get the list of users