Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handle multiple back/front-ends #449

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions src/satosa/metadata_creation/saml_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -169,3 +169,19 @@ def create_entity_descriptor_metadata(entity_descriptor, valid_for=None):
entity_descriptor.valid_until = in_a_while(hours=valid_for)

return str(entity_descriptor)

def create_entities_descriptor(entity_descriptors, valid_for=None):
"""
:param entity_descriptors: the entity descriptors to put in in an EntitiesDescriptor
:param valid_for: number of hours the metadata should be valid
:return: the EntitiesDescriptor metadata

:type entity_descriptors: Sequence[saml2.md.EntityDescriptor]]
:type valid_for: Optional[int]
"""
entities_desc, xmldoc = entities_descriptor(entity_descriptors, valid_for=valid_for, name=None, ident=None,
sign=False, secc=None)
if not valid_instance(entities_desc):
raise ValueError("Could not construct valid EntitiesDescriptor tag")

return str(entities_desc)
18 changes: 10 additions & 8 deletions src/satosa/scripts/satosa_saml_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
from saml2.sigver import security_context

from ..metadata_creation.saml_metadata import create_entity_descriptors
from ..metadata_creation.saml_metadata import create_entities_descriptor
from ..metadata_creation.saml_metadata import create_entity_descriptor_metadata
from ..metadata_creation.saml_metadata import create_signed_entities_descriptor
from ..metadata_creation.saml_metadata import create_signed_entity_descriptor
from ..satosa_config import SATOSAConfig

Expand Down Expand Up @@ -33,14 +35,14 @@ def _create_split_entity_descriptors(entities, secc, valid, sign=True):

def _create_merged_entities_descriptors(entities, secc, valid, name, sign=True):
output = []
frontend_entity_descriptors = [e for sublist in entities.values() for e in sublist]
for frontend in frontend_entity_descriptors:
ed_str = (
create_signed_entity_descriptor(frontend, secc, valid)
if sign
else create_entity_descriptor_metadata(frontend, valid)
)
output.append((ed_str, name))
entity_descriptors = [e for sublist in entities.values() for e in sublist]

ed_str = (
create_signed_entities_descriptor(entity_descriptors, secc, valid)
if sign
else create_entities_descriptor(entity_descriptors, valid)
)
output.append((ed_str, name))

return output

Expand Down