|
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