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