@@ -80,17 +80,16 @@ def _negotiate_value(response):
8080
8181class HTTPSPNEGOAuth (AuthBase ):
8282 """Attaches HTTP GSSAPI Authentication to the given Request object."""
83- def __init__ (self , mutual_authentication = REQUIRED , service = "HTTP" ,
83+ def __init__ (self , mutual_authentication = REQUIRED , target_name = "HTTP" ,
8484 delegate = False , opportunistic_auth = False , creds = None ,
85- hostname_override = None , sanitize_mutual_error_response = True ):
85+ sanitize_mutual_error_response = True ):
8686 self .context = {}
87+ self .pos = None
8788 self .mutual_authentication = mutual_authentication
89+ self .target_name = target_name
8890 self .delegate = delegate
89- self .pos = None
90- self .service = service
9191 self .opportunistic_auth = opportunistic_auth
9292 self .creds = creds
93- self .hostname_override = hostname_override
9493 self .sanitize_mutual_error_response = sanitize_mutual_error_response
9594
9695 def generate_request_header (self , response , host , is_preemptive = False ):
@@ -108,19 +107,14 @@ def generate_request_header(self, response, host, is_preemptive=False):
108107 gssflags .append (gssapi .RequirementFlag .delegate_to_peer )
109108
110109 try :
111- # contexts still need to be stored by host, but hostname_override
112- # allows use of an arbitrary hostname for the GSSAPI exchange
113- # (eg, in cases of aliased hosts, internal vs external, CNAMEs
114- # w/ name-based HTTP hosting)
115- kerb_host = host
116- if self .hostname_override :
117- kerb_host = self .hostname_override
118-
119- kerb_spn = "{0}@{1}" .format (self .service , kerb_host )
120-
121110 gss_stage = "initiating context"
111+ if type (self .target_name ) != gssapi .Name :
112+ if '@' not in self .target_name :
113+ self .target_name = "%s@%s" % (self .target_name , host )
114+
115+ self .target_name = gssapi .Name (self .target_name )
122116 self .context [host ] = gssapi .SecurityContext (
123- usage = "initiate" , flags = gssflags , name = gssapi . Name ( kerb_spn ) ,
117+ usage = "initiate" , flags = gssflags , name = self . target_name ,
124118 creds = self .creds )
125119
126120 gss_stage = "stepping context"
0 commit comments