def do_attribute_consuming_service(conf, spsso): service_description = service_name = None 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", name_format=req_attr_name_format)) opt = conf.getattr("optional_attributes", "sp") if opt: requested_attributes.extend( do_requested_attribute(opt, acs, name_format=req_attr_name_format)) try: if conf.description: try: (text, lang) = conf.description except ValueError: text = conf.description lang = "en" service_description = [md.ServiceDescription(text=text, lang=lang)] except KeyError: pass try: if conf.name: try: (text, lang) = conf.name except ValueError: text = conf.name lang = "en" service_name = [md.ServiceName(text=text, lang=lang)] except KeyError: pass # Must be both requested attributes and service name if requested_attributes: if not service_name: service_name = [md.ServiceName(text="", lang="en")] ac_serv = md.AttributeConsumingService( index="1", service_name=service_name, requested_attribute=requested_attributes) if service_description: ac_serv.service_description = service_description spsso.attribute_consuming_service = [ac_serv]
def do_spsso_descriptor(conf, cert=None): spsso = md.SPSSODescriptor() spsso.protocol_support_enumeration = samlp.NAMESPACE endps = conf.getattr("endpoints", "sp") if endps: for (endpoint, instlist) in do_endpoints(endps, ENDPOINTS["sp"]).items(): setattr(spsso, endpoint, instlist) if cert: spsso.key_descriptor = do_key_descriptor(cert) for key in ["want_assertions_signed", "authn_requests_signed"]: try: val = conf.getattr(key, "sp") if val is None: setattr(spsso, key, DEFAULT[key]) #default ?! else: strval = "{0:>s}".format(val) setattr(spsso, key, strval.lower()) except KeyError: setattr(spsso, key, DEFAULTS[key]) requested_attributes = [] acs = conf.attribute_converters req = conf.getattr("required_attributes", "sp") if req: requested_attributes.extend(do_requested_attribute(req, acs, is_required="true")) opt=conf.getattr("optional_attributes", "sp") if opt: requested_attributes.extend(do_requested_attribute(opt, acs)) if requested_attributes: spsso.attribute_consuming_service = [md.AttributeConsumingService( requested_attribute=requested_attributes, service_name= [md.ServiceName(lang="en",text=conf.name)], index="1", )] try: if conf.description: try: (text, lang) = conf.description except ValueError: text = conf.description lang = "en" spsso.attribute_consuming_service[0].service_description = [ md.ServiceDescription(text=text, lang=lang)] except KeyError: pass dresp = conf.getattr("discovery_response", "sp") if dresp: if spsso.extensions is None: spsso.extensions = md.Extensions() spsso.extensions.add_extension_element(do_idpdisc(dresp)) return spsso