|
16 | 16 | import base64 |
17 | 17 | import logging |
18 | 18 |
|
19 | | -try: |
20 | | - from xml.etree import ElementTree |
21 | | -except ImportError: |
22 | | - from elementtree import ElementTree |
23 | | - |
24 | 19 | from django.conf import settings |
25 | 20 | from django.contrib import auth |
26 | 21 | from django.contrib.auth.decorators import login_required |
@@ -185,9 +180,11 @@ def login(request, |
185 | 180 | 'sha256': SIG_RSA_SHA256} |
186 | 181 | sig_alg_option = getattr(conf, '_sp_authn_requests_signed_alg', 'sha1') |
187 | 182 | sigalg = sig_alg_option_map[sig_alg_option] if sign_requests else None |
| 183 | + nsprefix = get_namespace_prefixes() |
188 | 184 | session_id, result = client.prepare_for_authenticate( |
189 | 185 | entityid=selected_idp, relay_state=came_from, |
190 | | - binding=binding, sign=False, sigalg=sigalg) |
| 186 | + binding=binding, sign=False, sigalg=sigalg, |
| 187 | + nsprefix=nsprefix) |
191 | 188 | except TypeError as e: |
192 | 189 | logger.error('Unable to know which IdP to use') |
193 | 190 | return HttpResponse(text_type(e)) |
@@ -486,24 +483,16 @@ def metadata(request, config_loader_path=None, valid_for=None): |
486 | 483 | content_type="text/xml; charset=utf8") |
487 | 484 |
|
488 | 485 |
|
489 | | -def register_namespace_prefixes(): |
| 486 | +def get_namespace_prefixes(): |
490 | 487 | from saml2 import md, saml, samlp |
491 | 488 | try: |
492 | 489 | from saml2 import xmlenc |
493 | 490 | from saml2 import xmldsig |
494 | 491 | except ImportError: |
495 | 492 | import xmlenc |
496 | 493 | import xmldsig |
497 | | - prefixes = (('saml', saml.NAMESPACE), |
498 | | - ('samlp', samlp.NAMESPACE), |
499 | | - ('md', md.NAMESPACE), |
500 | | - ('ds', xmldsig.NAMESPACE), |
501 | | - ('xenc', xmlenc.NAMESPACE)) |
502 | | - if hasattr(ElementTree, 'register_namespace'): |
503 | | - for prefix, namespace in prefixes: |
504 | | - ElementTree.register_namespace(prefix, namespace) |
505 | | - else: |
506 | | - for prefix, namespace in prefixes: |
507 | | - ElementTree._namespace_map[namespace] = prefix |
508 | | - |
509 | | -register_namespace_prefixes() |
| 494 | + return {'saml': saml.NAMESPACE, |
| 495 | + 'samlp': samlp.NAMESPACE, |
| 496 | + 'md': md.NAMESPACE, |
| 497 | + 'ds': xmldsig.NAMESPACE, |
| 498 | + 'xenc': xmlenc.NAMESPACE} |
0 commit comments