Python JIRA REST API和kerberos身份验证

Python JIRA REST API和kerberos身份验证,python,rest,authentication,jira,kerberos,Python,Rest,Authentication,Jira,Kerberos,我正在努力通过kerberos进行Jira REST API身份验证。基本身份验证按预期工作 如果我使用web浏览器访问登录页面(在我使用kinit之后),然后在python脚本中使用生成的JSESSIONID,那么我可以使用REST而不需要401。但是我没有ide如何使用python脚本实现这一点,我尝试使用requests\u kerberos,但是当我请求登录页面时,它只返回基本登录表单,而不是自动登录 您知道如何在kerberos身份验证中使用JIRA REST API吗 谢谢你的回答。

我正在努力通过kerberos进行Jira REST API身份验证。基本身份验证按预期工作

如果我使用web浏览器访问登录页面(在我使用kinit之后),然后在python脚本中使用生成的JSESSIONID,那么我可以使用REST而不需要401。但是我没有ide如何使用python脚本实现这一点,我尝试使用requests\u kerberos,但是当我请求登录页面时,它只返回基本登录表单,而不是自动登录

您知道如何在kerberos身份验证中使用JIRA REST API吗


谢谢你的回答。

经过一天的努力,我终于明白了

首先,您必须向
${jira url}/step auth gss
发送HTTP GET请求:

r = requests.get("https://example-jira.com/step-auth-gss", auth=requests_kerberos.HTTPKerberosAuth())
然后从cookie头中获取JSESSIONID,然后就可以休息了:

rd = requests.get(url, headers={"Cookie": "JSESSIONID=%s" % r.cookies['JSESSIONID']})

正如Vaclavedik所解释的,第一步是在私有Jira资源/URL上成功进行Kerberos身份验证后,获取有效的JSESSIONID cookie(以及atlassian.xsrf.token和crowd.token_密钥cookie,如果您使用crowd进行用户管理和SSO)

在Python中,PycURL包使使用Kerberos进行身份验证变得非常容易。您可以使用easy_install或pip在Windows/Mac OS/Linux上安装它。PycURL包依赖于libcurl。您需要检查libcurl版本是否大于等于7.38.0,因为HTTPAUTH_协商指令就是在该版本中引入的

那么,就这么简单了:

import pycurl

curl = pycurl.Curl()

# GET JSESSIONID
curl.setopt(pycurl.COOKIEFILE, "")
curl.setopt(pycurl.HTTPAUTH, pycurl.HTTPAUTH_NEGOTIATE)
curl.setopt(pycurl.USERPWD, ':')
curl.setopt(pycurl.URL, <ANY_JIRA_PRIVATE_URL>)
curl.perform()

# Then REST request
curl.setopt(pycurl.URL, <YOUR_JIRA_REST_URL>)
curl.perform()

curl.close()
导入pycurl
curl=pycurl.curl()
#获取JSESSIONID
setopt(pycurl.COOKIEFILE,“”)
setopt(pycurl.HTTPAUTH,pycurl.HTTPAUTH)
setopt(pycurl.USERPWD,':')
setopt(pycurl.URL


虽然这是Xabs提到的Cleito IWAAC插件的官方文档,但这将适用于Jira的任何服务器端Kerberos插件

您使用的Jira Kerberos插件是什么?或者这应该是现成的吗?当我在Jira上设置auth gss时,我得到404。我需要启用任何东西才能使此URL工作吗?回答to我自己的问题:这不是开箱即用的,我的所有基于Tomcat的产品都使用它。我使用Powershell获得了它,但仍然试图从Python中完全实现它。