summaryrefslogtreecommitdiff
path: root/src/saml2/assertion.py
diff options
context:
space:
mode:
authorRoland Hedberg <roland.hedberg@adm.umu.se>2014-03-28 09:39:36 +0100
committerRoland Hedberg <roland.hedberg@adm.umu.se>2014-03-28 09:39:36 +0100
commit2db8008701a05823be41d2321aa5e1f59df3b8ca (patch)
tree1b97cc6546d253c5199351298b111318e4f6bb2b /src/saml2/assertion.py
parent692aaac27cece54949bd189be1f580c7374d999b (diff)
downloadpysaml2-2db8008701a05823be41d2321aa5e1f59df3b8ca.tar.gz
More user friendly error message.
Diffstat (limited to 'src/saml2/assertion.py')
-rw-r--r--src/saml2/assertion.py47
1 files changed, 24 insertions, 23 deletions
diff --git a/src/saml2/assertion.py b/src/saml2/assertion.py
index 0ed30570..59cd6216 100644
--- a/src/saml2/assertion.py
+++ b/src/saml2/assertion.py
@@ -93,32 +93,33 @@ def filter_on_attributes(ava, required=None, optional=None, acs=None):
if required is None:
required = []
+ nform = "friendly_name"
for attr in required:
- found = False
- nform = ""
- for nform in ["friendly_name", "name"]:
- try:
- _name = attr[nform]
- except KeyError:
- if nform == "friendly_name":
- _name = get_local_name(acs, attr["name"],
- attr["name_format"])
- else:
- continue
+ try:
+ _name = attr[nform]
+ except KeyError:
+ if nform == "friendly_name":
+ _name = get_local_name(acs, attr["name"],
+ attr["name_format"])
+ else:
+ continue
- _fn = _match(_name, ava)
- if _fn:
- try:
- values = [av["text"] for av in attr["attribute_value"]]
- except KeyError:
- values = []
- res[_fn] = _filter_values(ava[_fn], values, True)
- found = True
- break
+ _fn = _match(_name, ava)
+ if not _fn: # In the unlikely case that someone has provided us
+ # with URIs as attribute names
+ _fn = _match(attr["name"], ava)
- if not found:
- raise MissingValue("Required attribute missing: '%s'" % (
- attr[nform],))
+ if _fn:
+ try:
+ values = [av["text"] for av in attr["attribute_value"]]
+ except KeyError:
+ values = []
+ res[_fn] = _filter_values(ava[_fn], values, True)
+ continue
+ else:
+ desc = "Required attribute missing: '%s' (%s)" % (attr["name"],
+ _name)
+ raise MissingValue(desc)
if optional is None:
optional = []