summaryrefslogtreecommitdiff
path: root/src/saml2/metadata.py
diff options
context:
space:
mode:
authorRoland Hedberg <roland.hedberg@adm.umu.se>2015-09-08 07:34:45 +0200
committerRoland Hedberg <roland.hedberg@adm.umu.se>2015-09-08 07:34:45 +0200
commit3ddbb1a128373aa83283506c691f7d1929b6f0ac (patch)
treea808134d126d6adc5298e02a9bf6561321590491 /src/saml2/metadata.py
parent2be0571a5f9ee13f5c8eaa92c789e9e4764caf7a (diff)
downloadpysaml2-3ddbb1a128373aa83283506c691f7d1929b6f0ac.tar.gz
Allow name_format for requested attributes to be set in the configuration.
Diffstat (limited to 'src/saml2/metadata.py')
-rw-r--r--src/saml2/metadata.py27
1 files changed, 19 insertions, 8 deletions
diff --git a/src/saml2/metadata.py b/src/saml2/metadata.py
index 170f59d3..9eaf5d6b 100644
--- a/src/saml2/metadata.py
+++ b/src/saml2/metadata.py
@@ -239,15 +239,19 @@ def do_key_descriptor(cert=None, enc_cert=None, use="both"):
return kd_list
-def do_requested_attribute(attributes, acs, is_required="false"):
+def do_requested_attribute(attributes, acs, is_required="false",
+ name_format=NAME_FORMAT_URI):
lista = []
for attr in attributes:
- attr = from_local_name(acs, attr, NAME_FORMAT_URI)
+ attr = from_local_name(acs, attr, name_format)
args = {}
- for key in attr.keyswv():
- args[key] = getattr(attr, key)
+ if isinstance(attr, six.string_types):
+ args["name"] = attr
+ else:
+ for key in attr.keyswv():
+ args[key] = getattr(attr, key)
args["is_required"] = is_required
- args["name_format"] = NAME_FORMAT_URI
+ args["name_format"] = name_format
lista.append(md.RequestedAttribute(**args))
return lista
@@ -465,14 +469,21 @@ def do_attribute_consuming_service(conf, spsso):
requested_attributes = []
acs = conf.attribute_converters
req = conf.getattr("required_attributes", "sp")
+
+ req_attr_name_format = conf.getattr("requested_attribute_name_format", "sp")
+ if req_attr_name_format is None:
+ req_attr_name_format = conf.requested_attribute_name_format
+
if req:
- requested_attributes.extend(do_requested_attribute(req, acs,
- is_required="true"))
+ requested_attributes.extend(
+ do_requested_attribute(req, acs, is_required="true",
+ name_format=req_attr_name_format))
opt = conf.getattr("optional_attributes", "sp")
if opt:
- requested_attributes.extend(do_requested_attribute(opt, acs))
+ requested_attributes.extend(
+ do_requested_attribute(opt, acs, name_format=req_attr_name_format))
try:
if conf.description: