summaryrefslogtreecommitdiff
path: root/src/saml2/config.py
diff options
context:
space:
mode:
authorNikos Sklikas <nsklikas@admin.grnet.gr>2020-05-05 14:12:02 +0300
committerNikos Sklikas <nsklikas@admin.grnet.gr>2020-05-28 13:00:06 +0300
commit531f6bd1eac3488987be0e153d847ff59f5bbfbf (patch)
tree0e5f6fc6248d07efbf13aaccb0a0c998693c40a8 /src/saml2/config.py
parent32ab8e68b48cb0f32b7299a1c72a36f25af3cc17 (diff)
downloadpysaml2-531f6bd1eac3488987be0e153d847ff59f5bbfbf.tar.gz
Add requested_attributes param
Add requested_attributes param to create_authn_request
Diffstat (limited to 'src/saml2/config.py')
-rw-r--r--src/saml2/config.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/saml2/config.py b/src/saml2/config.py
index 147d1bdf..011ab43d 100644
--- a/src/saml2/config.py
+++ b/src/saml2/config.py
@@ -509,6 +509,50 @@ class SPConfig(Config):
return None
+ def load(self, cnf, metadata_construction=False):
+ super().load(cnf, metadata_construction=False)
+ self.fix_requested_attributes()
+ return self
+
+ def fix_requested_attributes(self):
+ """Add friendly_name or name if missing to the requested attributes"""
+ requested_attrs = self.getattr('requested_attributes', 'sp')
+
+ if not requested_attrs:
+ return
+
+ for attr in requested_attrs:
+ friendly_name = attr.get('friendly_name')
+ name = attr.get('name')
+ name_format = attr.get('name_format')
+
+ if not name and not friendly_name:
+ raise ValueError(
+ "Missing required attribute: '{}' or '{}'".format(
+ 'name', 'friendly_name'))
+
+ if not name:
+ for converter in self.attribute_converters:
+ try:
+ attr['name'] = converter._to[friendly_name.lower()]
+ except KeyError:
+ continue
+ else:
+ if not name_format:
+ attr['name_format'] = converter.name_format
+ break
+
+ if not friendly_name:
+ for converter in self.attribute_converters:
+ try:
+ attr['friendly_name'] = converter._fro[name.lower()]
+ except KeyError:
+ continue
+ else:
+ if not name_format:
+ attr['name_format'] = converter.name_format
+ break
+
class IdPConfig(Config):
def_context = "idp"