2014-02-05 9 views
5

kerberos를 통한 Jira REST API 인증에 어려움을 겪고 있습니다. 기본 인증은 예상대로 작동합니다.JIRA REST API 및 kerberos 인증

웹 브라우저에서 로그인 페이지에 액세스 한 후 (kinit을 수행 한 후) 파이썬 스크립트에서 생성 된 JSESSIONID를 사용하면 401을 얻지 않고 REST를 사용할 수 있습니다.하지만 어떻게해야합니까? 파이썬 스크립트에서는 requests_kerberos를 사용하려고했지만 로그인 페이지를 요청하면 자동 로그인 대신 기본 로그인 양식이 반환됩니다.

kerberos 인증과 함께 JIRA REST API를 사용하는 방법을 알고 계십니까?

답변 해 주셔서 감사합니다.

답변

5

투쟁의 하루 후에 나는 마침내 그것을 알아 냈다.

r = requests.get("https://example-jira.com/step-auth-gss", auth=requests_kerberos.HTTPKerberosAuth()) 

그런 다음 당신이 쿠키 헤더에서 JSESSIONID를 얻을 당신이 떨어져 쉴 수 :

먼저 당신이 ${jira-url}/step-auth-gss에 HTTP GET 요청을 보내야합니다

으로 VaclavDedik에 의해 설명
rd = requests.get(url, headers={"Cookie": "JSESSIONID=%s" % r.cookies['JSESSIONID']}) 
+1

이 용도로 사용하는 JIRA Kerberos 플러그인은 무엇입니까? 아니면이 기능을 즉시 사용해야합니까? – Xabs

+0

Jira에서 set-auth-gss를 실행하면 404가 표시됩니다. 이 URL을 작동 시키려면 아무 것도 활성화해야합니까? –

+0

내 자신의 질문에 회신 : 이것은 밖으로 작동하지 않습니다, 나는 내 모든 Tomcat 기반의 [Cleito Kerberos plugin] (https://www.cleito.com/products/iwaac/documentation/)을 사용합니다. 제작품. PowerShell과 함께 작동 시키지만 여전히 파이썬에서 완벽하게 작동하도록 노력하고 있습니다. – Xabs

1

, 첫 번째 단계는 유효한 JSESSIONID 쿠키를 얻는 것입니다 (함께 atlassian.xsrf.token crowd.token_key cooki 개인용 Jira 자원/URL에서 성공적인 Kerberos 인증시 사용자 관리 및 SSO 용으로 Crowd를 사용하는 경우).

파이썬에서 PycURL 패키지는 Kerberos로 인증하기가 매우 쉽습니다. Windows/Mac OS/Linux에 easy_install 또는 pip으로 설치할 수 있습니다. PycURL 패키지는 libcurl에 의존합니다. HTTPAUTH_NEGOTIATE 지시문이 바로 그 버전에 도입되었으므로 libcurl 버전이> = 7.38.0인지 확인해야합니다. 이것은 Cleito의 공식 문서이지만 https://www.cleito.com/products/iwaac/documentation/integrated-windows-authentication-for-non-browser-clients/

:

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() 

하십시오이, 파이썬, PowerShell 및 그루비의 자세한 예는 다음 페이지를 체크 아웃 :

다음에,로 간단합니다 Xabs에서 언급 한 IWAAC 플러그인입니다. Jira 용 서버 측 Kerberos 플러그인과 함께 작동합니다.