Python request.session JIRA "You do not have the permission to see the specified issue"



首先,我知道这里提供的解决方案:JIRA REST API获取工作日志-";您没有查看指定问题的权限"。。。还有链接的博客文章(@Nick Josevski撰写的),虽然很有用,但并没有解决我的特定问题,这可能是一些琐碎的事情。。。

使用以下Python 2.7.3代码。。。

import requests
import getpass
import json
jira_user = raw_input("Username: ")
jira_pass = getpass.getpass()
session = requests.Session()
session.verify = jira_ca_certs # Our internal certs
auth_info = {"username": jira_user, "password":  jira_pass}
login_url = 'http://JIRA_SERVER.com/login.jsp'
session.post(login_url, data=auth_info)

我在向jira进行基本身份验证后生成cookie(注意:我使用"http",而没有指定PORT来对登录页面进行身份验证)。。由于会话自动保存返回的cookie,我可以使用session.cookies设置标题:

cookies = requests.utils.dict_from_cookiejar(session.cookies)
headers = {'Content-type': 'application/json', 'cookie': cookies}

接下来,我使用https+PORT:,通过基本的安全JIRA url来测试捕获的cookie

base = session.get('https://JIRA_SERVER.com:1234', headers=headers)
print 'base: ', base

如上所述,返回(,尽管这可能不是一个有效的测试?)。。。

base:  <Response [200]>

现在测试代码是否符合的预期目的。我使用相同的方法扩展特定JIRA问题的url:

jira = session.get('https://JIRA_SERVER.com:1234/rest/api/latest/issue/KRYP-6207', headers=headers)
print 'issue: ', jira
print jira.json()

使用JSON输出,我得到一个响应,声明我没有权限

issue:  <Response [401]>
{u'errorMessages': [u'You do not have the permission to see the specified issue.', u'Login Required'], u'errors': {}}

返回的cookie,我在标题中使用,是:

headers:  {'cookie': 'atlassian.xsrf.token=XXXXXXXXXXXXXXXX|lout; Path=/, JSESSIONID=XXXXXXXXXXXXXXXX; Path=/'}

我不知道为什么这适用于基础url,但不适用于问题url。。我使用Chrome POSTMAN来检查返回的cookie,它们与上面列出的cookie相同,即atlassian.xsrf.token和JSESSIONID。

希望这里有人能告诉我我做错了什么!提前感谢。。。

也许您没有正确登录?基于我在网络浏览器开发工具中看到的请求,我创建了以下请求,并与我们的JIRA一起工作:

import requests
import getpass
import json
jira_user = raw_input("Username: ")
jira_pass = getpass.getpass()
session = requests.Session()
headers = {
'Host': 'our.jira.com',
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:56.0) Gecko/20100101 Firefox/56.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en-US,en;q=0.5',
'Referer': 'https://our.jira.com/login.jsp',
'Content-Type': 'application/x-www-form-urlencoded',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1',
}
data = [
('os_username', jira_user),
('os_password', jira_pass),
('os_destination', ''),
('user_role', ''),
('atl_token', ''),
('login', 'Anmelden'),
]
loginPost = session.post('https://our.jira.com/login.jsp', headers=headers, data=data)
xsrf_token = session.cookies.get_dict()['atlassian.xsrf.token']
jsessionid = session.cookies.get_dict()['JSESSIONID']

cookies = {
'atlassian.xsrf.token': xsrf_token,
'JSESSIONID': jsessionid,
}
headers = {
'Host': 'our.jira.com',
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:56.0) Gecko/20100101 Firefox/56.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en-US,en;q=0.5',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1',
}
r = session.get('https://our.jira.com/rest/api/latest/issue/SDN-206', headers=headers, cookies=cookies)
print r.json()

相关内容

最新更新