Skip to content

Commit 6ff7f37

Browse files
author
Roland Hedberg
committed
More informative variable names.
1 parent a6ef514 commit 6ff7f37

File tree

2 files changed

+55
-65
lines changed

2 files changed

+55
-65
lines changed

example/idp2/idp.py

Lines changed: 37 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -121,30 +121,32 @@ def unpack_either(self):
121121
logger.debug("_dict: %s" % _dict)
122122
return _dict
123123

124-
def operation(self, _dict, binding):
125-
logger.debug("_operation: %s" % _dict)
126-
if not _dict or not 'SAMLRequest' in _dict:
124+
def operation(self, saml_msg, binding):
125+
logger.debug("_operation: %s" % saml_msg)
126+
if not saml_msg or not 'SAMLRequest' in saml_msg:
127127
resp = BadRequest('Error parsing request or no request')
128128
return resp(self.environ, self.start_response)
129129
else:
130130
try:
131-
_encrypt_cert = encrypt_cert_from_item(_dict["req_info"].message)
132-
return self.do(_dict["SAMLRequest"], binding,
133-
_dict["RelayState"], encrypt_cert=_encrypt_cert)
131+
_encrypt_cert = encrypt_cert_from_item(
132+
saml_msg["req_info"].message)
133+
return self.do(saml_msg["SAMLRequest"], binding,
134+
saml_msg["RelayState"],
135+
encrypt_cert=_encrypt_cert)
134136
except KeyError:
135137
# Can live with no relay state
136-
return self.do(_dict["SAMLRequest"], binding)
138+
return self.do(saml_msg["SAMLRequest"], binding)
137139

138-
def artifact_operation(self, _dict):
139-
if not _dict:
140+
def artifact_operation(self, saml_msg):
141+
if not saml_msg:
140142
resp = BadRequest("Missing query")
141143
return resp(self.environ, self.start_response)
142144
else:
143145
# exchange artifact for request
144-
request = IDP.artifact2message(_dict["SAMLart"], "spsso")
146+
request = IDP.artifact2message(saml_msg["SAMLart"], "spsso")
145147
try:
146148
return self.do(request, BINDING_HTTP_ARTIFACT,
147-
_dict["RelayState"])
149+
saml_msg["RelayState"])
148150
except KeyError:
149151
return self.do(request, BINDING_HTTP_ARTIFACT)
150152

@@ -188,24 +190,6 @@ def uri(self):
188190
_dict = self.unpack_either()
189191
return self.operation(_dict, BINDING_SOAP)
190192

191-
# def not_authn(self, key):
192-
# """
193-
#
194-
#
195-
# :return:
196-
# """
197-
# loc = "http://%s/login" % (self.environ["HTTP_HOST"])
198-
# loc += "?%s" % urllib.urlencode({"came_from": self.environ[
199-
# "PATH_INFO"], "key": key})
200-
# headers = [('Content-Type', 'text/plain')]
201-
#
202-
# logger.debug("location: %s" % loc)
203-
# logger.debug("headers: %s" % headers)
204-
#
205-
# resp = Redirect(loc, headers=headers)
206-
#
207-
# return resp(self.environ, self.start_response)
208-
209193
def not_authn(self, key, requested_authn_context):
210194
ruri = geturl(self.environ, query=False)
211195
return do_authentication(self.environ, self.start_response,
@@ -345,40 +329,40 @@ def do(self, query, binding_in, relay_state="", encrypt_cert=None):
345329
logger.debug("HTTPargs: %s" % http_args)
346330
return self.response(self.binding_out, http_args)
347331

348-
def _store_request(self, _dict):
349-
logger.debug("_store_request: %s" % _dict)
350-
key = sha1(_dict["SAMLRequest"]).hexdigest()
332+
def _store_request(self, saml_msg):
333+
logger.debug("_store_request: %s" % saml_msg)
334+
key = sha1(saml_msg["SAMLRequest"]).hexdigest()
351335
# store the AuthnRequest
352-
IDP.ticket[key] = _dict
336+
IDP.ticket[key] = saml_msg
353337
return key
354338

355339
def redirect(self):
356340
""" This is the HTTP-redirect endpoint """
357341

358342
logger.info("--- In SSO Redirect ---")
359-
_info = self.unpack_redirect()
343+
saml_msg = self.unpack_redirect()
360344

361345
try:
362-
_key = _info["key"]
363-
_info = IDP.ticket[_key]
364-
self.req_info = _info["req_info"]
346+
_key = saml_msg["key"]
347+
saml_msg = IDP.ticket[_key]
348+
self.req_info = saml_msg["req_info"]
365349
del IDP.ticket[_key]
366350
except KeyError:
367351
try:
368-
self.req_info = IDP.parse_authn_request(_info["SAMLRequest"],
352+
self.req_info = IDP.parse_authn_request(saml_msg["SAMLRequest"],
369353
BINDING_HTTP_REDIRECT)
370354
except KeyError:
371355
resp = BadRequest("Message signature verification failure")
372356
return resp(self.environ, self.start_response)
373357

374358
_req = self.req_info.message
375359

376-
if "SigAlg" in _info and "Signature" in _info: # Signed request
360+
if "SigAlg" in saml_msg and "Signature" in saml_msg: # Signed request
377361
issuer = _req.issuer.text
378362
_certs = IDP.metadata.certs(issuer, "any", "signing")
379363
verified_ok = False
380364
for cert in _certs:
381-
if verify_redirect_signature(_info, cert):
365+
if verify_redirect_signature(saml_msg, cert):
382366
verified_ok = True
383367
break
384368
if not verified_ok:
@@ -387,37 +371,37 @@ def redirect(self):
387371

388372
if self.user:
389373
if _req.force_authn:
390-
_info["req_info"] = self.req_info
391-
key = self._store_request(_info)
374+
saml_msg["req_info"] = self.req_info
375+
key = self._store_request(saml_msg)
392376
return self.not_authn(key, _req.requested_authn_context)
393377
else:
394-
return self.operation(_info, BINDING_HTTP_REDIRECT)
378+
return self.operation(saml_msg, BINDING_HTTP_REDIRECT)
395379
else:
396-
_info["req_info"] = self.req_info
397-
key = self._store_request(_info)
380+
saml_msg["req_info"] = self.req_info
381+
key = self._store_request(saml_msg)
398382
return self.not_authn(key, _req.requested_authn_context)
399383
else:
400-
return self.operation(_info, BINDING_HTTP_REDIRECT)
384+
return self.operation(saml_msg, BINDING_HTTP_REDIRECT)
401385

402386
def post(self):
403387
"""
404388
The HTTP-Post endpoint
405389
"""
406390
logger.info("--- In SSO POST ---")
407-
_info = self.unpack_either()
391+
saml_msg = self.unpack_either()
408392
self.req_info = IDP.parse_authn_request(
409-
_info["SAMLRequest"], BINDING_HTTP_POST)
393+
saml_msg["SAMLRequest"], BINDING_HTTP_POST)
410394
_req = self.req_info.message
411395
if self.user:
412396
if _req.force_authn:
413-
_info["req_info"] = self.req_info
414-
key = self._store_request(_info)
397+
saml_msg["req_info"] = self.req_info
398+
key = self._store_request(saml_msg)
415399
return self.not_authn(key, _req.requested_authn_context)
416400
else:
417-
return self.operation(_info, BINDING_HTTP_POST)
401+
return self.operation(saml_msg, BINDING_HTTP_POST)
418402
else:
419-
_info["req_info"] = self.req_info
420-
key = self._store_request(_info)
403+
saml_msg["req_info"] = self.req_info
404+
key = self._store_request(saml_msg)
421405
return self.not_authn(key, _req.requested_authn_context)
422406

423407
# def artifact(self):

src/saml2/sigver.py

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -610,35 +610,35 @@ def verify(self, msg, sig, key):
610610
RESP_ORDER = ["SAMLResponse", "RelayState", "SigAlg"]
611611

612612

613-
def verify_redirect_signature(info, cert):
613+
def verify_redirect_signature(saml_msg, cert):
614614
"""
615615
616-
:param info: A dictionary as produced by parse_qs, means all values are
616+
:param saml_msg: A dictionary as produced by parse_qs, means all values are
617617
lists.
618618
:param cert: A certificate to use when verifying the signature
619619
:return: True, if signature verified
620620
"""
621621

622622
try:
623-
signer = SIGNER_ALGS[info["SigAlg"][0]]
623+
signer = SIGNER_ALGS[saml_msg["SigAlg"][0]]
624624
except KeyError:
625-
raise Unsupported("Signature algorithm: %s" % info["SigAlg"])
625+
raise Unsupported("Signature algorithm: %s" % saml_msg["SigAlg"])
626626
else:
627-
if info["SigAlg"][0] == RSA_SHA1:
628-
if "SAMLRequest" in info:
627+
if saml_msg["SigAlg"][0] == RSA_SHA1:
628+
if "SAMLRequest" in saml_msg:
629629
_order = REQ_ORDER
630-
elif "SAMLResponse" in info:
630+
elif "SAMLResponse" in saml_msg:
631631
_order = RESP_ORDER
632632
else:
633633
raise Unsupported(
634634
"Verifying signature on something that should not be "
635635
"signed")
636-
args = info.copy()
636+
args = saml_msg.copy()
637637
del args["Signature"] # everything but the signature
638638
string = "&".join(
639639
[urllib.urlencode({k: args[k][0]}) for k in _order])
640640
_key = extract_rsa_key_from_x509_cert(pem_format(cert))
641-
_sign = base64.b64decode(info["Signature"][0])
641+
_sign = base64.b64decode(saml_msg["Signature"][0])
642642
try:
643643
signer.verify(string, _sign, _key)
644644
return True
@@ -1082,13 +1082,19 @@ def __init__(self, security_context, cert_file=None, cert_type="pem",
10821082
Initiates the class for handling certificates. Enables the certificates
10831083
to either be a single certificate as base functionality or makes it
10841084
possible to generate a new certificate for each call to the function.
1085-
:param key_file:
1086-
:param key_type:
1085+
1086+
:param security_context:
10871087
:param cert_file:
10881088
:param cert_type:
1089-
:param generate_cert:
1089+
:param key_file:
1090+
:param key_type:
1091+
:param generate_cert_info:
10901092
:param cert_handler_extra_class:
1093+
:param tmp_cert_file:
1094+
:param tmp_key_file:
1095+
:param verify_cert:
10911096
"""
1097+
10921098
self._verify_cert = False
10931099
self._generate_cert = False
10941100
#This cert do not have to be valid, it is just the last cert to be

0 commit comments

Comments
 (0)