summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland Hedberg <roland.hedberg@adm.umu.se>2014-12-23 16:41:57 +0100
committerRoland Hedberg <roland.hedberg@adm.umu.se>2014-12-23 16:41:57 +0100
commit9a9c010b590306a1fefd5720441281b857e448a4 (patch)
tree157322997ddfbde962f54aa8bdfbf4fa89c2a893
parente25bc70da2464c8c7d87b174f7060e61a39b7970 (diff)
parentffa283613e2f1936f391b536a8341aca0b9e8c14 (diff)
downloadpysaml2-9a9c010b590306a1fefd5720441281b857e448a4.tar.gz
Merge branch 'master' of github.com:rohe/pysaml2
-rw-r--r--src/saml2/authn_context/__init__.py18
-rw-r--r--tests/test_77_authn_context.py18
2 files changed, 31 insertions, 5 deletions
diff --git a/src/saml2/authn_context/__init__.py b/src/saml2/authn_context/__init__.py
index c08d23a9..97461396 100644
--- a/src/saml2/authn_context/__init__.py
+++ b/src/saml2/authn_context/__init__.py
@@ -166,14 +166,20 @@ class AuthnBroker(object):
if req_authn_context.comparison:
_cmp = req_authn_context.comparison
else:
- _cmp = "minimum"
- return self._pick_by_class_ref(
- req_authn_context.authn_context_class_ref[0].text, _cmp)
+ _cmp = "exact"
+ if _cmp == 'exact':
+ res = []
+ for cls_ref in req_authn_context.authn_context_class_ref:
+ res += (self._pick_by_class_ref(cls_ref.text, _cmp))
+ return res
+ else:
+ return self._pick_by_class_ref(
+ req_authn_context.authn_context_class_ref[0].text, _cmp)
elif req_authn_context.authn_context_decl_ref:
if req_authn_context.comparison:
_cmp = req_authn_context.comparison
else:
- _cmp = "minimum"
+ _cmp = "exact"
return self._pick_by_class_ref(
req_authn_context.authn_context_decl_ref, _cmp)
@@ -215,6 +221,8 @@ def authn_context_class_ref(ref):
def requested_authn_context(class_ref, comparison="minimum"):
+ if not isinstance(class_ref, list):
+ class_ref = [class_ref]
return RequestedAuthnContext(
- authn_context_class_ref=[AuthnContextClassRef(text=class_ref)],
+ authn_context_class_ref=[AuthnContextClassRef(text=i) for i in class_ref],
comparison=comparison)
diff --git a/tests/test_77_authn_context.py b/tests/test_77_authn_context.py
index cc0f3551..ed7c4b4f 100644
--- a/tests/test_77_authn_context.py
+++ b/tests/test_77_authn_context.py
@@ -142,6 +142,24 @@ def test_authn_3():
method, ref = info[0]
assert REF2METHOD[AL1] == method
+ rac = requested_authn_context([AL1, AL2], "exact")
+
+ info = authn.pick(rac)
+ assert len(info) == 2
+ method, ref = info[0]
+ assert REF2METHOD[AL1] == method
+ method, ref = info[1]
+ assert REF2METHOD[AL2] == method
+
+ rac = requested_authn_context([AL3, AL2], "exact")
+
+ info = authn.pick(rac)
+ assert len(info) == 2
+ method, ref = info[0]
+ assert REF2METHOD[AL3] == method
+ method, ref = info[1]
+ assert REF2METHOD[AL2] == method
+
rac = requested_authn_context(AL1, "better")
info = authn.pick(rac)