Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用C登录到JIRA#_C#_Curl_Jira - Fatal编程技术网

C# 使用C登录到JIRA#

C# 使用C登录到JIRA#,c#,curl,jira,C#,Curl,Jira,在我们的JIRA实例中,我们的用户许可证是有限的,远远少于公司的员工数量。但我们希望所有员工都能查看JIRA仪表板(即查看项目、查看问题等)。我已经阅读了一些解决方法,我们可以在JIRA中创建一个只读访问帐户,然后创建另一个登录表单来验证员工的身份。一旦员工提供了要验证的正确凭据,程序将向Atlassian提交机密只读帐户 我可以连接到CURL(状态:200),但我希望能够将我重定向到使用只读帐户登录的JIRA仪表板 下面是我的curl命令: curl -v -u "<emailaddre

在我们的JIRA实例中,我们的用户许可证是有限的,远远少于公司的员工数量。但我们希望所有员工都能查看JIRA仪表板(即查看项目、查看问题等)。我已经阅读了一些解决方法,我们可以在JIRA中创建一个只读访问帐户,然后创建另一个登录表单来验证员工的身份。一旦员工提供了要验证的正确凭据,程序将向Atlassian提交机密只读帐户

我可以连接到CURL(状态:200),但我希望能够将我重定向到使用只读帐户登录的JIRA仪表板

下面是我的curl命令:

curl -v -u "<emailaddress>:<api_token>" -H "Accept: application/json" -H "Content-Type: application/json" --cookie "cookies.cook" --cookie-jar "cookies.cook" -d "{\"username\": \"<emailaddress>\",\"password\": \"<password>\"}" -X POST "https://<company>.atlassian.net/rest/auth/1/session"

谢谢你的帮助

如果您正在考虑将cookies从您的域发送到另一个域;恐怕,我认为这是不可能的。论坛中提供的解决方法可能与您尝试的方法不同。你应该问问Atlassian。

我不是C#专家,但我已经使用JIRA多年了,是的,这是可能的,也是绝对合法的,你只需要在收到curl的响应后将适当的标题传递给下一个请求

根据JIRA:他们的登录API,
为JIRA中的用户创建一个新会话。成功创建会话后,可以通过传递适当的HTTP Cookie头来访问Jira的任何远程API和“WEB UI”。

您的卷发请求应该是POST

curl——请求发布\
--使用者email@example.com:


收到令牌后,打开浏览器(Mozilla),转到JIRA登录页面,按F12键并转到网络,通过添加从curl收到的令牌编辑标题,然后重新发送请求。如果成功,将显示状态为200的重定向。转到重定向的URL(而不是原始URL),您应该已登录。祝你好运

看看这个SDK吧,我投票将这个问题作为离题来结束,因为它要求的是定义上非法的东西(绕过许可证限制)。@EgeÖzcan,我不知道你为什么说它非法,当我发现Atlassian论坛本身的解决方法时。看:@Miko我没有看到官方的回应。不管怎样,你没有准确地描述什么不起作用。无论如何,您将无法通过自己的域为其他域分配cookie。您可以尝试使用api并通过自己的接口列出相关问题。
Uri url = new Uri("https://<company>.atlassian.net/secure/Dashboard.jspa");
//Authenticate the user
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, "<companydomain>"))
        {
            if (pc.ValidateCredentials(txtAdUser, txtAdPass))
            {
                var webRequest = (HttpWebRequest)WebRequest.Create(url);
                CookieContainer cookieJar = new CookieContainer();
                cookieJar.Add(cookie);
                webRequest.CookieContainer = cookieJar;
                webRequest.Method = "POST";
                webRequest.ContentType = "application/json";
                webRequest.Accept = "application/json";
                var authcred = Convert.ToBase64String(Encoding.Default.GetBytes("<emailaddress>:<api_token>"));
                webRequest.Headers.Add("Authorization", "Basic " + authcred);
                webRequest.Headers.Add(HttpRequestHeader.Cookie, cookieHeader);

                var data = "{\"username\":\"<emailaddress>\",\"password\":\"<password>\"}";
                byte[] bytes = Encoding.Default.GetBytes(data);
                webRequest.ContentLength = bytes.Length;

                Stream sw = webRequest.GetRequestStream();
                sw.Write(bytes, 0, bytes.Length);
                sw.Flush();
                sw.Close();
                Response.RedirecT(ourjirainstance);
            }
        }
curl --request POST \
  --user email@example.com:<api_token> \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --cookie cookie.txt --cookie-jar cookie.txt
  --data '
    {
      "username": "fred",
      "password": "freds_password"
    }' \
  --url 'https://your-domain.atlassian.net/rest/auth/1/session'