diff --git a/bin/account-manager-client.pl b/bin/account-manager-client.pl index d10d5073f90a51e0a24e604240da0e225a9285c2..08d1ecc38ab6c60a63013dc7f711ba9420614bdf 100755 --- a/bin/account-manager-client.pl +++ b/bin/account-manager-client.pl @@ -158,13 +158,11 @@ sub parse_federation_metadata { }; die "unable to load federation metadata: $EVAL_ERROR" if $EVAL_ERROR; - my %args; - if ($options{sp_entityid}) { - $args{filter_entity_id} = $options{sp_entityid}; - } - + my $data; eval { - $federation_metadata->parse(%args); + $data = $federation_metadata->parse( + entity_id => $options{sp_entityid}, + ); }; die "unable to parse federation metadata: $EVAL_ERROR\n" if $EVAL_ERROR; @@ -173,9 +171,7 @@ sub parse_federation_metadata { ## List SAML entities printf "Hashref representing the metadata:\n"; - IdPAccountManager::Tools::dump_var( - $federation_metadata->{federation_metadata_as_hashref}, - 0, \*STDOUT); + IdPAccountManager::Tools::dump_var($data, 0, \*STDOUT); } diff --git a/lib/IdPAccountManager/SAMLMetadata.pm b/lib/IdPAccountManager/SAMLMetadata.pm index 588eea72dbbb767adf3043156ae54b922f84f626..2a6d2499e78cc4b0d1962be25911f4f00b86809e 100644 --- a/lib/IdPAccountManager/SAMLMetadata.pm +++ b/lib/IdPAccountManager/SAMLMetadata.pm @@ -39,42 +39,9 @@ sub new { sub parse { my ($self, %args) = @_; - my %parser_args = ( - metadata_as_xml => $self->{doc}, - filter_entity_type => 'sp' - ); - - if ($args{filter_entity_id}) { - $parser_args{filter_entity_id} = $args{filter_entity_id}; - } - - $self->{federation_metadata_as_hashref} = - $self->_parse_saml_metadata(%parser_args); - - die "Failed to parse federation metadata" - unless defined $self->{federation_metadata_as_hashref}; - - return 1; -} - -## Dumps the SAML metadata content -sub print { - my ($self, $fd) = @_; - $fd = \*STDOUT unless $fd; - - my $root = $self->{doc}->documentElement(); - print $fd $root->toString(); -} - -## Parse a SAML federation metadata file -sub _parse_saml_metadata { - my ($self, %args) = @_; - - my $root = $args{metadata_as_xml}; - my @extracted_array; foreach my $EntityDescriptor ( - @{ $root->getElementsByLocalName('EntityDescriptor') }) + @{ $self->{doc}->getElementsByLocalName('EntityDescriptor') }) { my $extracted_data = {}; @@ -85,9 +52,8 @@ sub _parse_saml_metadata { } } - next - if ($args{filter_entity_id} - && ($args{filter_entity_id} ne $extracted_data->{entityid})); + next if ($args{entity_id} + && ($args{entity_id} ne $extracted_data->{entityid})); $extracted_data->{xml_md} = IdPAccountManager::Tools::escape_xml($EntityDescriptor->toString()); @@ -283,6 +249,15 @@ sub _parse_saml_metadata { return \@extracted_array; } +## Dumps the SAML metadata content +sub print { + my ($self, $fd) = @_; + $fd = \*STDOUT unless $fd; + + my $root = $self->{doc}->documentElement(); + print $fd $root->toString(); +} + 1; __END__ diff --git a/lib/IdPAccountManager/WebRequest.pm b/lib/IdPAccountManager/WebRequest.pm index 9dff134d30fb1f49f71e43ef622efa1877151a50..65548e7fcb976d73e3ce8af3933a72de166c6a95 100755 --- a/lib/IdPAccountManager/WebRequest.pm +++ b/lib/IdPAccountManager/WebRequest.pm @@ -249,7 +249,7 @@ sub req_account_wizard { } eval { - $federation_metadata->parse(); + $self->{param_out} = $federation_metadata->parse(); }; if ($EVAL_ERROR) { push @{ $self->{param_out}->{errors} }, "internal"; @@ -260,9 +260,6 @@ sub req_account_wizard { return undef; } - $self->{param_out}->{federation_metadata_as_hashref} = - $federation_metadata->{federation_metadata_as_hashref}; - return 1; }