Skip to content

Commit cc010d4

Browse files
Use the correct GSSAPI nametype (hostbased_service)
Signed-off-by: Robbie Harwood <[email protected]>
1 parent 2abbcbf commit cc010d4

File tree

4 files changed

+26
-19
lines changed

4 files changed

+26
-19
lines changed

README.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,8 @@ applicable). However, an explicit credential can be in instead, if desired.
133133
>>> import gssapi
134134
>>> import requests
135135
>>> from requests_gssapi import HTTPSPNEGOAuth, REQUIRED
136-
>>> creds = gssapi.Credentials(name=gssapi.Name("user@REALM"), usage="initiate")
136+
>>> name = gssapi.Name("user@REALM", gssapi.NameType.hostbased_service)
137+
>>> creds = gssapi.Credentials(name=name, usage="initiate")
137138
>>> gssapi_auth = HTTPSPNEGOAuth(creds=creds)
138139
>>> r = requests.get("http://example.org", auth=gssapi_auth)
139140
...

requests_gssapi/compat.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ def generate_request_header(self, response, host, is_preemptive=False):
4545
try:
4646
if self.principal is not None:
4747
gss_stage = "acquiring credentials"
48-
name = gssapi.Name(self.principal)
48+
name = gssapi.Name(
49+
self.principal, gssapi.NameType.hostbased_service)
4950
self.creds = gssapi.Credentials(name=name, usage="initiate")
5051

5152
# contexts still need to be stored by host, but hostname_override
@@ -59,7 +60,8 @@ def generate_request_header(self, response, host, is_preemptive=False):
5960
kerb_host = self.hostname_override
6061

6162
kerb_spn = "{0}@{1}".format(self.service, kerb_host)
62-
self.target_name = gssapi.Name(kerb_spn)
63+
self.target_name = gssapi.Name(
64+
kerb_spn, gssapi.NameType.hostbased_service)
6365

6466
return HTTPSPNEGOAuth.generate_request_header(self, response,
6567
host, is_preemptive)

requests_gssapi/gssapi_.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,8 @@ def generate_request_header(self, response, host, is_preemptive=False):
134134
if '@' not in self.target_name:
135135
self.target_name = "%s@%s" % (self.target_name, host)
136136

137-
self.target_name = gssapi.Name(self.target_name)
137+
self.target_name = gssapi.Name(
138+
self.target_name, gssapi.NameType.hostbased_service)
138139
self.context[host] = gssapi.SecurityContext(
139140
usage="initiate", flags=gssflags, name=self.target_name,
140141
creds=self.creds)

test_requests_gssapi.py

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@
3737
b64_negotiate_server = "negotiate " + b64encode(b"servertoken").decode()
3838

3939

40+
def gssapi_name(s):
41+
return gssapi.Name(s, gssapi.NameType.hostbased_service)
42+
43+
4044
class GSSAPITestCase(unittest.TestCase):
4145
def setUp(self):
4246
"""Setup."""
@@ -99,7 +103,7 @@ def test_generate_request_header(self):
99103
auth.generate_request_header(response, host),
100104
b64_negotiate_response)
101105
fake_init.assert_called_with(
102-
name=gssapi.Name("[email protected]"),
106+
name=gssapi_name("[email protected]"),
103107
creds=None, flags=gssflags, usage="initiate")
104108
fake_resp.assert_called_with(b"token")
105109

@@ -114,7 +118,7 @@ def test_generate_request_header_init_error(self):
114118
self.assertRaises(requests_gssapi.exceptions.SPNEGOExchangeError,
115119
auth.generate_request_header, response, host)
116120
fake_init.assert_called_with(
117-
name=gssapi.Name("[email protected]"),
121+
name=gssapi_name("[email protected]"),
118122
usage="initiate", flags=gssflags, creds=None)
119123

120124
def test_generate_request_header_step_error(self):
@@ -128,7 +132,7 @@ def test_generate_request_header_step_error(self):
128132
self.assertRaises(requests_gssapi.exceptions.SPNEGOExchangeError,
129133
auth.generate_request_header, response, host)
130134
fake_init.assert_called_with(
131-
name=gssapi.Name("[email protected]"),
135+
name=gssapi_name("[email protected]"),
132136
usage="initiate", flags=gssflags, creds=None)
133137
fail_resp.assert_called_with(b"token")
134138

@@ -165,7 +169,7 @@ def test_authenticate_user(self):
165169
connection.send.assert_called_with(request)
166170
raw.release_conn.assert_called_with()
167171
fake_init.assert_called_with(
168-
name=gssapi.Name("[email protected]"),
172+
name=gssapi_name("[email protected]"),
169173
flags=gssflags, usage="initiate", creds=None)
170174
fake_resp.assert_called_with(b"token")
171175

@@ -202,7 +206,7 @@ def test_handle_401(self):
202206
connection.send.assert_called_with(request)
203207
raw.release_conn.assert_called_with()
204208
fake_init.assert_called_with(
205-
name=gssapi.Name("[email protected]"),
209+
name=gssapi_name("[email protected]"),
206210
creds=None, flags=gssflags, usage="initiate")
207211
fake_resp.assert_called_with(b"token")
208212

@@ -436,7 +440,7 @@ def test_handle_response_401(self):
436440
connection.send.assert_called_with(request)
437441
raw.release_conn.assert_called_with()
438442
fake_init.assert_called_with(
439-
name=gssapi.Name("[email protected]"),
443+
name=gssapi_name("[email protected]"),
440444
usage="initiate", flags=gssflags, creds=None)
441445
fake_resp.assert_called_with(b"token")
442446

@@ -479,7 +483,7 @@ def connection_send(self, *args, **kwargs):
479483
connection.send.assert_called_with(request)
480484
raw.release_conn.assert_called_with()
481485
fake_init.assert_called_with(
482-
name=gssapi.Name("[email protected]"),
486+
name=gssapi_name("[email protected]"),
483487
usage="initiate", flags=gssflags, creds=None)
484488
fake_resp.assert_called_with(b"token")
485489

@@ -493,7 +497,7 @@ def test_generate_request_header_custom_service(self):
493497
auth = requests_gssapi.HTTPKerberosAuth(service="barfoo")
494498
auth.generate_request_header(response, host),
495499
fake_init.assert_called_with(
496-
name=gssapi.Name("[email protected]"),
500+
name=gssapi_name("[email protected]"),
497501
usage="initiate", flags=gssflags, creds=None)
498502
fake_resp.assert_called_with(b"token")
499503

@@ -530,7 +534,7 @@ def test_delegation(self):
530534
connection.send.assert_called_with(request)
531535
raw.release_conn.assert_called_with()
532536
fake_init.assert_called_with(
533-
name=gssapi.Name("[email protected]"),
537+
name=gssapi_name("[email protected]"),
534538
usage="initiate", flags=gssdelegflags, creds=None)
535539
fake_resp.assert_called_with(b"token")
536540

@@ -546,11 +550,10 @@ def test_principal_override(self):
546550
auth.generate_request_header(response, host)
547551
fake_creds.assert_called_with(gssapi.creds.Credentials,
548552
usage="initiate",
549-
name=gssapi.Name("user@REALM"))
553+
name=gssapi_name("user@REALM"))
550554
fake_init.assert_called_with(
551-
name=gssapi.Name("[email protected]"),
555+
name=gssapi_name("[email protected]"),
552556
usage="initiate", flags=gssflags, creds=b"fake creds")
553-
fake_resp.assert_called_with(b"token")
554557

555558
def test_realm_override(self):
556559
with patch.multiple("gssapi.SecurityContext", __init__=fake_init,
@@ -563,7 +566,7 @@ def test_realm_override(self):
563566
hostname_override="otherhost.otherdomain.org")
564567
auth.generate_request_header(response, host)
565568
fake_init.assert_called_with(
566-
name=gssapi.Name("[email protected]"),
569+
name=gssapi_name("[email protected]"),
567570
usage="initiate", flags=gssflags, creds=None)
568571
fake_resp.assert_called_with(b"token")
569572

@@ -592,7 +595,7 @@ def test_explicit_creds(self):
592595
auth = requests_gssapi.HTTPSPNEGOAuth(creds=creds)
593596
auth.generate_request_header(response, host)
594597
fake_init.assert_called_with(
595-
name=gssapi.Name("[email protected]"),
598+
name=gssapi_name("[email protected]"),
596599
usage="initiate", flags=gssflags, creds=b"fake creds")
597600
fake_resp.assert_called_with(b"token")
598601

@@ -607,7 +610,7 @@ def test_target_name(self):
607610
target_name="[email protected]")
608611
auth.generate_request_header(response, host)
609612
fake_init.assert_called_with(
610-
name=gssapi.Name("[email protected]"),
613+
name=gssapi_name("[email protected]"),
611614
usage="initiate", flags=gssflags, creds=None)
612615
fake_resp.assert_called_with(b"token")
613616

0 commit comments

Comments
 (0)