def do_spsso_descriptor(conf, cert=None, enc_cert=None): spsso = md.SPSSODescriptor() spsso.protocol_support_enumeration = samlp.NAMESPACE exts = conf.getattr("extensions", "sp") if exts: if spsso.extensions is None: spsso.extensions = md.Extensions() for key, val in exts.items(): _ext = do_extensions(key, val) if _ext: for _e in _ext: spsso.extensions.add_extension_element(_e) endps = conf.getattr("endpoints", "sp") if endps: for (endpoint, instlist) in do_endpoints(endps, ENDPOINTS["sp"]).items(): setattr(spsso, endpoint, instlist) ext = do_endpoints(endps, ENDPOINT_EXT["sp"]) if ext: if spsso.extensions is None: spsso.extensions = md.Extensions() for vals in ext.values(): for val in vals: spsso.extensions.add_extension_element(val) ui_info = conf.getattr("ui_info", "sp") if ui_info: if spsso.extensions is None: spsso.extensions = md.Extensions() spsso.extensions.add_extension_element(do_uiinfo(ui_info)) if cert or enc_cert: metadata_key_usage = conf.metadata_key_usage spsso.key_descriptor = do_key_descriptor(cert=cert, enc_cert=enc_cert, use=metadata_key_usage) 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(str(val)) setattr(spsso, key, strval.lower()) except KeyError: setattr(spsso, key, DEFAULTS[key]) do_attribute_consuming_service(conf, spsso) _do_nameid_format(spsso, conf, "sp") return spsso
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) ext = do_endpoints(endps, ENDPOINT_EXT["sp"]) if ext: if spsso.extensions is None: spsso.extensions = md.Extensions() for vals in ext.values(): for val in vals: spsso.extensions.add_extension_element(val) if cert: spsso.key_descriptor = do_key_descriptor(cert, "both") 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")) _do_nameid_format(spsso, conf, "sp") opt = conf.getattr("optional_attributes", "sp") if opt: requested_attributes.extend(do_requested_attribute(opt, acs)) if requested_attributes: # endpoints that might publish requested attributes if spsso.attribute_consuming_service: for acs in spsso.attribute_consuming_service: if not acs.requested_attribute: acs.requested_attribute = 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 return spsso
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