我有一个与JIRA实例交互的Google应用程序。
到目前为止,应用程序使用基本身份验证对JIRA进行urlfetch调用,但是由于它现在正在进行数十次单独的REST调用-- POST和GET --我希望使用cookie身份验证可以在一定程度上减少延迟。
示例Basic-工作的身份验证代码:
result = urlfetch.fetch(jira_url,
deadline=60,
headers={"Authorization": "Basic %s" %
base64.b64encode("%s:%s" % (username, password))
})和cookie替代方案:
result = urlfetch.fetch(jira_url,
deadline=60,
headers={"X-Atlassian-Token": "no-check",
"Cookie": "JSESSIONID=529…snip…C4C"
})我使用说明成功地检索了JSESSIONID,但是cookie查询只返回"401 - Unauthorized" error while loading this page.错误,就好像cookie已经过期了一样。
{
"errorMessages" : [
"You do not have the permission to see the specified issue.",
"Login Required"
],
"errors" : {}
}我正在回忆Memcache中的cookie,因为大多数交互都是从一个Task队列中进行的,并且必然是一个单独的线程,但是cookie是在召回之前生成的。
发布于 2016-04-02 19:53:06
饼干还没有过期。造成此问题的原因是,JSESSIONID不是成功验证后续请求所需的唯一cookie。
我遇到了同样的问题,并通过重新发送在创建会话时从服务器获得的所有cookie来解决这个问题。在我的例子中( JIRA服务器托管在亚特兰西安云),这些必需的cookie是: atlassian.xsrf.token和studio.crowd.tokenkey。
我在这里发布了一篇详细的文章:JIRA REST :基于Cookie的身份验证。代码的示例在C#中,但总体思路应该是明确的。
https://stackoverflow.com/questions/35632642
复制相似问题