Skip registration of CAS App when config has errors (#2525)
This commit is contained in:
parent
e50db3f083
commit
71a8fc6d16
|
@ -47,45 +47,60 @@ sub loadSrv {
|
||||||
# Load CAS application list
|
# Load CAS application list
|
||||||
sub loadApp {
|
sub loadApp {
|
||||||
my ($self) = @_;
|
my ($self) = @_;
|
||||||
if ( $self->conf->{casAppMetaDataOptions}
|
unless ( $self->conf->{casAppMetaDataOptions}
|
||||||
and %{ $self->conf->{casAppMetaDataOptions} } )
|
and %{ $self->conf->{casAppMetaDataOptions} } )
|
||||||
{
|
{
|
||||||
$self->casAppList( $self->conf->{casAppMetaDataOptions} );
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$self->logger->info("No CAS apps found in configuration");
|
$self->logger->info("No CAS apps found in configuration");
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ( keys %{ $self->conf->{casAppMetaDataOptions} } ) {
|
foreach ( keys %{ $self->conf->{casAppMetaDataOptions} } ) {
|
||||||
|
|
||||||
|
my $valid = 1;
|
||||||
|
|
||||||
# Load access rule
|
# Load access rule
|
||||||
my $rule = $self->conf->{casAppMetaDataOptions}->{$_}
|
my $rule =
|
||||||
|
$self->conf->{casAppMetaDataOptions}->{$_}
|
||||||
->{casAppMetaDataOptionsRule};
|
->{casAppMetaDataOptionsRule};
|
||||||
if ( length $rule ) {
|
if ( length $rule ) {
|
||||||
$rule = $self->p->HANDLER->substitute($rule);
|
$rule = $self->p->HANDLER->substitute($rule);
|
||||||
unless ( $rule = $self->p->HANDLER->buildSub($rule) ) {
|
unless ( $rule = $self->p->HANDLER->buildSub($rule) ) {
|
||||||
$self->error( 'CAS App rule error: '
|
$self->logger->error(
|
||||||
|
"Unable to build access rule for CAS Application $_: "
|
||||||
. $self->p->HANDLER->tsv->{jail}->error );
|
. $self->p->HANDLER->tsv->{jail}->error );
|
||||||
return 0;
|
$valid = 0;
|
||||||
}
|
}
|
||||||
$self->spRules->{$_} = $rule;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Load per-application macros
|
# Load per-application macros
|
||||||
my $macros = $self->conf->{casAppMetaDataMacros}->{$_};
|
my $macros = $self->conf->{casAppMetaDataMacros}->{$_};
|
||||||
|
my $compiledMacros = {};
|
||||||
for my $macroAttr ( keys %{$macros} ) {
|
for my $macroAttr ( keys %{$macros} ) {
|
||||||
my $macroRule = $macros->{$macroAttr};
|
my $macroRule = $macros->{$macroAttr};
|
||||||
if ( length $macroRule ) {
|
if ( length $macroRule ) {
|
||||||
$macroRule = $self->p->HANDLER->substitute($macroRule);
|
$macroRule = $self->p->HANDLER->substitute($macroRule);
|
||||||
unless ( $macroRule = $self->p->HANDLER->buildSub($macroRule) )
|
if ( $macroRule = $self->p->HANDLER->buildSub($macroRule) ) {
|
||||||
{
|
$compiledMacros->{$macroAttr} = $macroRule;
|
||||||
$self->error( 'SAML SP macro error: '
|
}
|
||||||
. $self->p->HANDLER->tsv->{jail}->error );
|
else {
|
||||||
return 0;
|
$self->logger->error(
|
||||||
|
"Unable to build macro $macroAttr for CAS Application $_: "
|
||||||
|
. $self->p->HANDLER->tsv->{jail}->error );
|
||||||
|
$valid = 0;
|
||||||
}
|
}
|
||||||
$self->spMacros->{$_}->{$macroAttr} = $macroRule;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($valid) {
|
||||||
|
$self->casAppList->{$_} =
|
||||||
|
$self->conf->{casAppMetaDataOptions}->{$_};
|
||||||
|
$self->spRules->{$_} = $rule;
|
||||||
|
$self->spMacros->{$_} = $compiledMacros;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$self->logger->error(
|
||||||
|
"CAS Application $_ has errors and will be ignored");
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user