def _create_nameid_ext_el(value): text = value["text"] if isinstance(value, dict) else value attributes = ({ "Format": NAMEID_FORMAT_PERSISTENT, "NameQualifier": value["NameQualifier"], "SPNameQualifier": value["SPNameQualifier"], } if isinstance(value, dict) else { "Format": NAMEID_FORMAT_PERSISTENT }) element = ExtensionElement("NameID", NAMESPACE, attributes=attributes, text=text) return element
def _instance(klass, ava, seccont, base64encode=False, elements_to_sign=None): instance = klass() for prop in instance.c_attributes.values(): #print "# %s" % (prop) if prop in ava: if isinstance(ava[prop], bool): setattr(instance, prop, "%s" % ava[prop]) elif isinstance(ava[prop], int): setattr(instance, prop, "%d" % ava[prop]) else: setattr(instance, prop, ava[prop]) if "text" in ava: instance.set_text(ava["text"], base64encode) for prop, klassdef in instance.c_children.values(): #print "## %s, %s" % (prop, klassdef) if prop in ava: #print "### %s" % ava[prop] if isinstance(klassdef, list): # means there can be a list of values _make_vals(ava[prop], klassdef[0], seccont, instance, prop, base64encode=base64encode, elements_to_sign=elements_to_sign) else: cis = _make_vals(ava[prop], klassdef, seccont, instance, prop, True, base64encode, elements_to_sign) setattr(instance, prop, cis) if "extension_elements" in ava: for item in ava["extension_elements"]: instance.extension_elements.append( ExtensionElement(item["tag"]).loadd(item)) if "extension_attributes" in ava: for key, val in ava["extension_attributes"].items(): instance.extension_attributes[key] = val if "signature" in ava: elements_to_sign.append((class_name(instance), instance.id)) return instance
def to_(self, attrvals): """ Create a list of Attribute instances. :param attrvals: A dictionary of attributes and values :return: A list of Attribute instances """ attributes = [] for key, value in attrvals.items(): name = self._to.get(key.lower()) if name: if name == "urn:oid:1.3.6.1.4.1.5923.1.1.1.10": # special case for eduPersonTargetedID attr_value = [] for v in value: extension_element = ExtensionElement( "NameID", NAMESPACE, attributes={'Format': NAMEID_FORMAT_PERSISTENT}, text=v) attrval = saml.AttributeValue( extension_elements=[extension_element]) attr_value.append(attrval) else: attr_value = do_ava(value) attributes.append( factory(saml.Attribute, name=name, name_format=self.name_format, friendly_name=key, attribute_value=attr_value)) else: attributes.append( factory(saml.Attribute, name=key, attribute_value=do_ava(value))) return attributes