diff options
author | Ivan Kanakarakis <ivan.kanak@gmail.com> | 2021-12-07 15:43:32 +0200 |
---|---|---|
committer | Ivan Kanakarakis <ivan.kanak@gmail.com> | 2021-12-07 15:53:16 +0200 |
commit | b32fe902b47803fb4a701ed7830d9e7b03fde3fc (patch) | |
tree | 8c72163476ec5292be8d26b2353d77765194ba2b | |
parent | 79ae7112547e6b386fe27f5fc57e02b4220d6872 (diff) | |
download | pysaml2-b32fe902b47803fb4a701ed7830d9e7b03fde3fc.tar.gz |
Attribute values are optional
Signed-off-by: Ivan Kanakarakis <ivan.kanak@gmail.com>
-rw-r--r-- | src/saml2/assertion.py | 7 | ||||
-rw-r--r-- | src/saml2/mdstore.py | 14 |
2 files changed, 11 insertions, 10 deletions
diff --git a/src/saml2/assertion.py b/src/saml2/assertion.py index 4474bf42..99308ecc 100644 --- a/src/saml2/assertion.py +++ b/src/saml2/assertion.py @@ -110,10 +110,9 @@ def filter_on_attributes(ava, required=None, optional=None, acs=None, def _apply_attr_value_restrictions(attr, res, must=False): - try: - values = [av["text"] for av in attr["attribute_value"]] - except KeyError: - values = [] + values = [ + av["text"] for av in attr.get("attribute_value", []) + ] try: res[_fn].extend(_filter_values(ava[_fn], values)) diff --git a/src/saml2/mdstore.py b/src/saml2/mdstore.py index 40f7232e..105d8509 100644 --- a/src/saml2/mdstore.py +++ b/src/saml2/mdstore.py @@ -1379,13 +1379,15 @@ class MetadataStore(MetaData): ext = self.__getitem__(entity_id)["extensions"] except KeyError: return res + for elem in ext["extension_elements"]: - if elem["__class__"] == classnames["mdattr_entityattributes"]: - for attr in elem["attribute"]: - if attr["name"] not in res: - res[attr["name"]] = [] - res[attr["name"]] += [v["text"] for v in attr[ - "attribute_value"]] + if elem["__class__"] != classnames["mdattr_entityattributes"]: + continue + for attr in elem["attribute"]: + res[attr["name"]] = [ + *res.get(attr["name"], []), + *(v["text"] for v in attr.get("attribute_value", [])) + ] return res def supported_algorithms(self, entity_id): |