summaryrefslogtreecommitdiff
path: root/src/saml2/assertion.py
diff options
context:
space:
mode:
authorIoannis Kakavas <ikakavas@noc.grnet.gr>2017-06-12 16:57:28 +0300
committerIoannis Kakavas <ikakavas@noc.grnet.gr>2017-06-12 16:57:28 +0300
commitc24b47cebacb89191c1cea29e1dd21964398e91d (patch)
treea1a636077ab51df00c2a3fa0554c6d35e0ea7c44 /src/saml2/assertion.py
parent9d0cc9cdb6c692ff97dc7a6e890aa7b1445f7af1 (diff)
downloadpysaml2-c24b47cebacb89191c1cea29e1dd21964398e91d.tar.gz
Base attribute filtering on internal representation names
Instead on relying on the FriendlyName from metadatata, use the name of the internal representation of an attribute in order to perform filtering. Resolves #422
Diffstat (limited to 'src/saml2/assertion.py')
-rw-r--r--src/saml2/assertion.py13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/saml2/assertion.py b/src/saml2/assertion.py
index 64944d11..a9e3372a 100644
--- a/src/saml2/assertion.py
+++ b/src/saml2/assertion.py
@@ -79,10 +79,15 @@ def filter_on_attributes(ava, required=None, optional=None, acs=None,
def _match_attr_name(attr, ava):
try:
- friendly_name = attr["friendly_name"]
- except KeyError:
- friendly_name = get_local_name(acs, attr["name"],
+ friendly_name = get_local_name(acs, attr["name"],
attr["name_format"])
+ except:
+ friendly_name = None
+ if not friendly_name:
+ try:
+ friendly_name = attr["friendly_name"]
+ except KeyError:
+ pass
_fn = _match(friendly_name, ava)
if not _fn: # In the unlikely case that someone has provided us with
@@ -91,6 +96,7 @@ def filter_on_attributes(ava, required=None, optional=None, acs=None,
return _fn
+
def _apply_attr_value_restrictions(attr, res, must=False):
try:
values = [av["text"] for av in attr["attribute_value"]]
@@ -105,7 +111,6 @@ def filter_on_attributes(ava, required=None, optional=None, acs=None,
return _filter_values(ava[_fn], values, must)
res = {}
-
if required is None:
required = []