Skip to content

Commit 861f9b7

Browse files
authored
[REST Client] Kerberos authentication improvements (#692)
* [rest_client] Kerberos authentication ported to 'requests-kerberos'. * [rest_client] Kerberos parameter marked as unused. * [doc] Kerberos code example updated.
1 parent 360d4a8 commit 861f9b7

File tree

4 files changed

+11
-30
lines changed

4 files changed

+11
-30
lines changed

atlassian/rest_client.py

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -87,21 +87,10 @@ def __exit__(self, *_):
8787
def _create_basic_session(self, username, password):
8888
self._session.auth = (username, password)
8989

90-
def _create_kerberos_session(self, kerberos_service):
91-
try:
92-
import kerberos as kerb
93-
except ImportError as e:
94-
log.debug(e)
95-
try:
96-
import kerberos_sspi as kerb
97-
except ImportError:
98-
raise ImportError("No kerberos implementation available")
99-
__, krb_context = kerb.authGSSClientInit(kerberos_service)
100-
kerb.authGSSClientStep(krb_context, "")
101-
auth_header = "Negotiate " + kerb.authGSSClientResponse(krb_context)
102-
self._update_header("Authorization", auth_header)
103-
response = self._session.get(self.url, verify=self.verify_ssl)
104-
response.raise_for_status()
90+
def _create_kerberos_session(self, _):
91+
from requests_kerberos import HTTPKerberosAuth, OPTIONAL
92+
93+
self._session.auth = HTTPKerberosAuth(mutual_authentication=OPTIONAL)
10594

10695
def _create_oauth_session(self, oauth_dict):
10796
oauth = OAuth1(

docs/index.rst

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -105,27 +105,25 @@ Or Kerberos *(installation with kerberos extra necessary)*:
105105

106106
.. code-block:: python
107107
108-
kerberos_service = 'HTTP/jira.localhost@YOUR.DOMAIN.COM'
109-
110108
jira = Jira(
111109
url='http://localhost:8080',
112-
kerberos=kerberos_service)
110+
kerberos={})
113111
114112
confluence = Confluence(
115113
url='http://localhost:8090',
116-
kerberos=kerberos_service)
114+
kerberos={})
117115
118116
bitbucket = Bitbucket(
119117
url='http://localhost:7990',
120-
kerberos=kerberos_service)
118+
kerberos={})
121119
122120
service_desk = ServiceDesk(
123121
url='http://localhost:8080',
124-
kerberos=kerberos_service)
122+
kerberos={})
125123
126124
xray = Xray(
127125
url='http://localhost:8080',
128-
kerberos=kerberos_service)
126+
kerberos={})
129127
130128
Or reuse cookie file:
131129

requirements.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,4 @@ requests
33
six
44
oauthlib
55
requests_oauthlib
6-
kerberos; platform_system!='Windows'
7-
kerberos-sspi; platform_system=='Windows'
6+
requests-kerberos

setup.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,7 @@
2626
include_package_data=True,
2727
zip_safe=False,
2828
install_requires=["deprecated", "requests", "six", "oauthlib", "requests_oauthlib"],
29-
extras_require={
30-
"kerberos": [
31-
'kerberos-sspi ; platform_system=="Windows"',
32-
'kerberos ; platform_system!="Windows"',
33-
]
34-
},
29+
extras_require={"kerberos": ['requests-kerberos']},
3530
platforms="Platform Independent",
3631
classifiers=[
3732
"Development Status :: 4 - Beta",

0 commit comments

Comments
 (0)